前端技术 手机教程
程序开发 平面动画
系统软件 CMS教程
CMS教程 在线手册
资源下载 网络安全
精准搜索请尝试:精确搜索

PHP二维数组多条件排序方法

2021-09-03 16:12:59 来源:原创 作者:寂静的神经

需求:有以下数组,按照 volume 降序排列,当 volume 相同时,按 edition 升序排列。

array:6 [
  0 => array:2 [
    "volume" => 67
    "edition" => 2
  ]
  1 => array:2 [
    "volume" => 86
    "edition" => 1
  ]
  2 => array:2 [
    "volume" => 85
    "edition" => 6
  ]
  3 => array:2 [
    "volume" => 98
    "edition" => 2
  ]
  4 => array:2 [
    "volume" => 86
    "edition" => 6
  ]
  5 => array:2 [
    "volume" => 67
    "edition" => 7
  ]
]

PHP 提供了 array_multisort 函数用来实现多数组排序或者数组多条件排序,上面需求的实现代码如下:

$data = [
    ['volume' => 67, 'edition' => 2],
    ['volume' => 86, 'edition' => 1],
    ['volume' => 85, 'edition' => 6],
    ['volume' => 98, 'edition' => 2],
    ['volume' => 86, 'edition' => 6],
    ['volume' => 67, 'edition' => 7],
];
$volume = array_column($data,'volume');
$edition = array_column($data,'edition');
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
var_dump($data);

输出(注意与示例数组的区别):

array:6 [
  0 => array:2 [
    "volume" => 98
    "edition" => 2
  ]
  1 => array:2 [
    "volume" => 86
    "edition" => 1
  ]
  2 => array:2 [
    "volume" => 86
    "edition" => 6
  ]
  3 => array:2 [
    "volume" => 85
    "edition" => 6
  ]
  4 => array:2 [
    "volume" => 67
    "edition" => 2
  ]
  5 => array:2 [
    "volume" => 67
    "edition" => 7
  ]
]

 

本文关键词:数组 排序

相关文章

零五网,分享IT知识,国内顶级IT知识门户网站。

Copyright (C) www.02405.com, All Rights Reserved.

零五网 版权所有 辽ICP备13002105号-1