PHP sort arrays by specific key inside another array
本问题已经有最佳答案,请猛点这里访问。
0
如何按数组中的特定键对数组进行排序:
它是一个有两个值的多个数组的数组,如何按每个数组的第二个值排序,所以结果是:
有一种方法可以做到:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | <?php $input = array( array(5, 2), array(5, 3), array(3, 1), array(5, 4) ); /** * Funkily sort the input array. * * @param array $array * * @return array */ function funky_sort(array $array) { //Get the array of the first elements $first_elements = array_map(function($el) { return $el[0]; }, $array); //Get the array of the second elements $second_elements = array_map(function($el) { return $el[1]; }, $array); //Sort the second elements only sort($second_elements, SORT_NUMERIC); //Combine both arrays to the same format as the original $result = array(); for ($i = 0; $i < count($first_elements); $i++) { $result[] = array($first_elements[$i], $second_elements[$i]); } //Fire away return $result; } var_dump(funky_sort($input)); |
这里有一些方向不能解决你的问题(这类问题很奇怪),但可以引导你找到解决方案。您可以使用usort函数(http://www.php.net/manual/en/function.usort.php)并定义自己的比较器。
如果知道排序逻辑,请将其添加到cmp函数中,如果两个元素相等,则返回0;如果$A<$B,则返回-1;否则返回1。
代码将如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
2