我需要在PHP中对数组进行排序,然后在第一个索引相同的情况下按其第二个索引进行排序.让我解释 :
元素将随机排列:
(2,1),(4,4),(2,9),(4,8),(2,35),(2,1),(2,35),(4,4),(4,25),(4,4)
我需要先按照第一个数字对它们进行排序.结果将是:
(2,1),(2,9),(2,1),(2,35),(4,4),(4,8),(4,4),(4,25),(4,4)
现在,您可以看到所有元素按第一个索引一起分组.现在我需要按照当前分组的第二个索引“WITHIN”进行分组.因此看起来像:
(2,1),(2,1),(2,9),(2,35),(4,4),(4,4),(4,4),(4,8),(4,25)
这只是数组的简单表示.实际数组如下:
Array
(
[0] => Array
(
[practice_id] => 119
[practice_location_id] => 173
)
[1] => Array
(
[practice_id] => 2
[practice_location_id] => 75
)
[2] => Array
(
[practice_id] => 18
[practice_location_id] => 28
)
[3] => Array
(
[practice_id] => 119
[practice_location_id] => 174
)
[4] => Array
(
[practice_id] => 119
[practice_location_id] => 173
)
[5] => Array
(
[practice_id] => 2
[practice_location_id] => 75
)
[6] => Array
(
[practice_id] => 119
[practice_location_id] => 174
)
[7] => Array
(
[practice_id] => 18
[practice_location_id] => 28
)
[8] => Array
(
[practice_id] => 18
[practice_location_id] => 27
)
)
非常感谢一些帮助.
解决方法:
这个回调使用我刚刚从@ casablanca的回答中学到的东西,然后把它放在一个循环中.这样,它不仅可以比较两个,而且可以比较多个键.
function sort_callback($x, $y)
foreach ($x as $key => $value) {
if ($x[$key] != $y[$key])
return $x[$key] - $y[$key];
}
return 0;
}
如前所述,将此函数作为usort()的回调函数.
标签:php,sorting
来源: https://codeday.me/bug/20190721/1497105.html