PHP按键多维阵列排序 我有一系列的阵列 阵列(8){ [0] => 阵列(1){ 'Peter'=> int(4) } [1] => 阵列(1){ 'Piper'=> int(4) } [2] => 阵列(1){ '选择'=&g ...

问题描述 投票:0回答:3
我如何按关键示例(Peter)对此多维阵列进行排序。我尝试使用

ksort($arr);
但是它只是返回布尔

我想要的输出
array(8) {
      [0] =>
      array(1) {
        'peck' =>
        int(4)
      }
      [1] =>
      array(1) {
        'Peter' =>
        int(4)
      }
      [2] =>
      array(1) {
        'picked' =>
        int(4)
      }
      [3] =>
      array(1) {
        'pickled' =>
        int(4)
      }
      [4] =>
      array(1) {
        'piper' =>
        int(4)
    }

数组应按键和上升顺序排序。

使用这样的用户,请检查
demo

php sorting
3个回答
1
投票

方法进行就地进行。因此,尽管它仅返回布尔值(正如您正确地陈述),但它会突变

ksort()
内部的值以排序顺序。请注意,根据您的预期输出,您似乎想进行案例不敏感的搜索。为此,您需要使用
$arr

0
投票
SORT_FLAG_CASE

来调用

ksort($arr)
。您可以在
ksort($arr, SORT_FLAG_CASE)
方法的文档
中查看
ksort()
如何使用排序标志。希望有帮助!
    
您可以做这样的事情,
sort()
demo


0
投票

$temp = array_map(function($a){ return key($a); // fetching all the keys }, $arr); natcasesort($temp); // sorting values case insensitive $result = []; // logic of sorting by other array foreach($temp as $v){ foreach($arr as $v1){ if($v == key($v1)){ $result[] = $v1; break; } } }
    

在隔离和准备数据以进行比较的同时,较少的开销,将第二级键作为第一个参数,然后设置必要的标志,以对键进行比较。 demo

Array ( [0] => Array ( [peck] => 4 ) [1] => Array ( [Peter] => 4 ) [2] => Array ( [picked] => 4 ) [3] => Array ( [pickled] => 4 ) [4] => Array ( [Piper] => 4 ) )

© www.soinside.com 2019 - 2025. All rights reserved.