like the function usort in php but if two members compare as equal, their key should be same. for example: $arrayToSort = array(2,6,1,3,3);
sonra sıralama dönüş
array
1 => 1
2 => 2
3 => 3
3 => 3
4 => 6
Orada bir yerli işlev ama bu might ne istediğinizi olmak emin değilim.
<?php
$arr = array(1,2,2,2,3);
function arrayKeyJoin( $arr ) {
$newArr = array();
foreach ( $arr as $item ) {
if ( !in_array( $item, array_keys($newArr) ) ) {
$newArr[$item] = array();
}
array_push( $newArr[$item], $item );
}
return $newArr;
}
echo '<pre>', var_dump( arrayKeyJoin( $arr ) ), '</pre>';
Çıktı:
array(3) {
[1]=>
array(1) {
[0]=>
int(1)
}
[2]=>
array(3) {
[0]=>
int(2)
[1]=>
int(2)
[2]=>
int(2)
}
[3]=>
array(1) {
[0]=>
int(3)
}
}
Meder cevabı yanıt olarak, bu tür in_array()
gibi yavaş fonksiyonları kullanarak konum ve array_push()
yerine böyle isset()
veya {[(3)] gibi hızlı yapıları } operatörü. Kodunuzu aşağıdaki gibi görünmelidir:
$arr = array(1,2,2,2,3);
$new = array();
foreach ($arr as $v)
{
$new[$v][] = $v;
}
// then you can sort the array if you wish
ksort($new);
Ne yaptığınızı bir şekilde, benzer olduğunu unutmayın, PHP'nin kendi array_count_values()
a>
Sen aynı olan iki tuşları olamaz. Tuşlar benzersizdir.
Eğer kodu oluşturmak için çalışırsanız, burada ne var.
$data[1] = 1; // Assigns value 1 to key 1; 1 element in array
$data[2] = 2; // Assigns value 2 to key 2; 2 elements in array
$data[3] = 3; // Assigns value 3 to key 3; 3 elements in array
$data[3] = 3; // Reassigns value 3 to key 3; STILL 3 elements in array
$data[4] = 6; // Assigns value 6 to key 4; 4 elements in array
Sizin örnek mantıklı değil. Aynı dizideki iki eşit tuşları olamaz. Eğer dizinin değerlerini sıralamak ve onların tuşları korunmuş olması, "anahtar dernek korur" altında "evet" demek asort()
. Or any of the functions in the table at http://ca.php.net/manual/en/array.sorting.php bu kullanmak istiyorsanız.