после использования массива, строковый ключ меняется на num key?

мой код 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, кто подскажет почему? и как отсортировать массив (с ключом строки), но сохранить ключ строки?

0

Решение

usort () делает это: это задокументированное поведение функции, см. второе Note на странице документов

если вам нужно сохранить ассоциативность ключей, используйте uasort ()

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]