I want to sort a multi-array by key, those data come form front end somehow will be mess up in an random sort.
So I must make the data sorted, at first I natural use the combine 'array_walk($array, "ksort")'. Work fine at simple array data, while dealing a multi-array, it work wrong.
Finally, I solve it by loop ksort.
But I have no clue why the nearly same codes get a different result.
Someone help? Thx
$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);
}
The result:
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