This question already has answers here:
How to Sort Multi-dimensional Array by Value?
(13个回答)
7年前关闭。
我的数组:
我想按其内部内容对
理想情况下,顺序为 start_year,start_month,end_year,end_month 。我想我可以以某种方式使用
谢谢。
编辑:如它所示,该解决方案非常简单,我不知道的是,在比较callback-compare-function的过程中,您可以使用更深的结构-因此,如果比lvl-1索引更深的索引始终同样的方法(我的情况):)
(13个回答)
7年前关闭。
我的数组:
$MY_ARRAY =
Array
(
[0] => Array
(
[0] => 2861
[1] => Array
(
[start_month] => 6
[start_year] => 1970
[end_month] => 12
[end_year] => 1990
[experience_info] => "Practically a random string"
)
)
)
我想按其内部内容对
$MY_ARRAY
直接子级进行排序,理想情况下,顺序为 start_year,start_month,end_year,end_month 。我想我可以以某种方式使用
array_multisort()
,但我不知道如何。有人知道如何处理吗?谢谢。
编辑:如它所示,该解决方案非常简单,我不知道的是,在比较callback-compare-function的过程中,您可以使用更深的结构-因此,如果比lvl-1索引更深的索引始终同样的方法(我的情况):)
最佳答案
为此,您可以使用uasort函数:
function compare_callback($arr1, $arr2) {
$start_year1 = $arr1[1]['start_year'];
$start_year2 = $arr2[1]['start_year'];
$start_month1 = $arr1[1]['start_month'];
$start_month2 = $arr2[1]['start_month'];
$end_year1 = $arr1[1]['end_year'];
$end_year2 = $arr2[1]['end_year'];
$end_month1 = $arr1[1]['end_month'];
$end_month2 = $arr2[1]['end_month'];
return ($start_year1 === $start_year2)
? (($start_month1 === $start_month2)
? (($end_year1 === $end_year2)
? (($end_month1 === $end_month2)
? 0
: (($end_month1 < $end_month2) ? -1 : 1))
: (($end_year1 < $end_year2) ? -1 : 1))
: ($start_month1 < $start_month2) ? -1 : 1)
: (($start_year1 < $start_year2) ? -1 : 1);
}
uasort($array, 'compare_callback');
关于PHP:按给定的字段顺序按比1级维值更深的值对多数组进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21820514/
10-09 01:23