Почему эти почти одинаковые коды получают другой результат в php array_walk + ksort?

Я хочу отсортировать мульти-массив по ключу, эти данные, поступающие из внешнего интерфейса, будут каким-то образом путаться в случайном порядке.

Поэтому я должен отсортировать данные, сначала я использую комбайн ‘array_walk ($ array, «ksort»)’. Прекрасно работают с простыми данными массива, при работе с несколькими массивами это работает неправильно.

Наконец, я решаю это с помощью цикла ksort.

Но я понятия не имею, почему почти одинаковые коды дают другой результат.

Кто-нибудь поможет? Спасибо

    $arr = [
['identifier_num' => 1, 'form_id' => 3, 'is_view' => 1, 'in_time' => '3', 'model_num' => 44],
['form_id' => 1, 'identifier_num' => 3, 'in_time' => 1, 'is_view' => '3', 'model_num' => 44],
['b' => 1, 'a' => '2'],
];
$a2 = $arr;

array_walk($arr, 'diydiy');
var_dump($arr);

array_walk($a2, 'ksort');
var_dump($a2);

function diydiy(&$a)
{
ksort($a);
}

Результат:

array (size=3)
0 =>
array (size=5)
'form_id' => int 3
'identifier_num' => int 1
'in_time' => string '3' (length=1)
'is_view' => int 1
'model_num' => int 44
1 =>
array (size=5)
'form_id' => int 1
'identifier_num' => int 3
'in_time' => int 1
'is_view' => string '3' (length=1)
'model_num' => int 44
2 =>
array (size=2)
'a' => string '2' (length=1)
'b' => int 1
D:\WWW\t.php:13:
array (size=3)
0 =>
array (size=5)
'form_id' => int 3
'identifier_num' => int 1
'in_time' => string '3' (length=1)
'is_view' => int 1
'model_num' => int 44
1 =>
array (size=5)
'model_num' => int 44
'is_view' => string '3' (length=1)
'in_time' => int 1
'identifier_num' => int 3
'form_id' => int 1
2 =>
array (size=2)
'a' => string '2' (length=1)
'b' => int 1

0

Решение

Задача ещё не решена.

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

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

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