PHP多维数组根据某一个字段排序

1,561次阅读
没有评论

共计 693 个字符,预计需要花费 2 分钟才能阅读完成。

现有如下一个多维数组,需要对其按 ID 序号进行排序。

<?php
$data = array(
  array('id' => 5,
    'name' => 'zhangsan'
  ),
  array('id' => 65,
    'name' => 'lisi'
  ),
  array('id' => 3,
    'name' => 'laowang',
  )
);

现在需要按照 ID 进行排序,需要用到如下两个函数:

array_column()

返回输入数组中某个单一列的值。

array_multisort() 

返回排序数组。您可以输入一个或多个数组。函数先对第一个数组进行排序,接着是其他数组,如果两个或多
个值相同,它将对下一个数组进行排序。

第一个函数,是从数组中抽离出单独的一列值,垂直提取出来,第二个函数大意就是对多个数组按照第一个参照数组做相同的排序操作。

最终代码如下:

<?php
$data = array(
  array('id' => 5,
    'name' => 'zhangsan'
  ),
  array('id' => 65,
    'name' => 'lisi'
  ),
  array('id' => 3,
    'name' => 'laowang',
  )
);
$names = array_column($data,'id');
array_multisort($names,SORT_DESC,$data);

var_dump($data);

得到结果如下:

[
    {
        "id":65,
        "name":"lisi"
    },
    {
        "id":5,
        "name":"zhangsan"
    },
    {
        "id":3,
        "name":"laowang"
    }
]

array_multisort 的第二个参数可选:SORT_DESC 和 SORT_ASC,分别代表按照降序和升序排列。

正文完
加入官方交流QQ群:778957856
post-qrcode
 0
clark
版权声明:本站原创文章,由 clark 于2022-01-24发表,共计693字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)

clark

最新文章
macos Shadowrocket与本地DNS冲突

macos Shadowrocket与本地DNS冲突

开着 Shadowrocket,本地 dns 全部失效,都走了代理,无法访问,关闭 Shadowrocket ...
openwrt Tailscale外网不通,以及部分必要设置

openwrt Tailscale外网不通,以及部分必要设置

搭建好 openwrt 之后,为了能够外网远程访问,搭配 Tailscale 可完美实现,由于首次配置,会遇到...
告别复杂配置:用Tailscale Peer Relay打造更快、更简单的内网网络

告别复杂配置:用Tailscale Peer Relay打造更快、更简单的内网网络

如果你在国内直接使用过 Tailscale,大概率会对它的连接速度有所体会。想要获得稳定可用的体验,自建 DE...

赞助广告