мой код php:
<?php
$arr = array(
'a' => array(
'name' => 'aaa',
'pos' => 2
),
'b' => array(
'name' => 'bbb',
'pos' => 1
)
);
var_dump($arr);
function func_sort($a, $b) {
return intval($a['pos']) - intval($b['pos']);
}
usort($arr, 'func_sort');
var_dump($arr);
?>
результат:
array(2) {
["a"]=>
array(2) {
["name"]=>
string(3) "aaa"["pos"]=>
int(2)
}
["b"]=>
array(2) {
["name"]=>
string(3) "bbb"["pos"]=>
int(1)
}
}array(2) {
[0]=>
array(2) {
["name"]=>
string(3) "bbb"["pos"]=>
int(1)
}
[1]=>
array(2) {
["name"]=>
string(3) "aaa"["pos"]=>
int(2)
}
}
после usrot, строковый ключ меняется на num key, кто подскажет почему? и как отсортировать массив (с ключом строки), но сохранить ключ строки?
usort () делает это: это задокументированное поведение функции, см. второе Note
на странице документов
если вам нужно сохранить ассоциативность ключей, используйте uasort ()
Других решений пока нет …