0

我想按键对多数组进行排序,这些来自前端的数据会以某种方式随机排序。

所以我必须对数据进行排序,起初我很自然地使用组合'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
4

0 回答 0