按整数值排序多维数组

时间:2014-10-20 22:14:27

标签: php arrays sorting multidimensional-array

我有以下数组:

Array
(
[Address Line 1] => Array
    (
        [llx] => 18.96
        [lly] => 28.88999999999999
    )

[Address Line 2] => Array
    (
        [llx] => 18.73
        [lly] => 35.66
    )

[City State ZIP Code] => Array
    (
        [llx] => 18.51
        [lly] => 47.16999999999999
    )

[Full Name] => Array
    (
        [llx] => 18.86
        [lly] => 20.15999999999997
    )

 )

并且我想循环遍历它并按照lly值对其进行排序:所以最终的结果应该是

Array
 (
[Full Name] => Array
    (
        [llx] => 18.86
        [lly] => 20.15999999999997
    )

[Address Line 1] => Array
    (
        [llx] => 18.96
        [lly] => 28.88999999999999
    )

[Address Line 2] => Array
    (
        [llx] => 18.73
        [lly] => 35.66
    )

[City State ZIP Code] => Array
    (
        [llx] => 18.51
        [lly] => 47.16999999999999
    )

  )

有关实现此目的的任何想法?我一直在查看php中的排序函数,但它们似乎主要关注单维数组,除非我遗漏了某些内容,否则就没有了

2 个答案:

答案 0 :(得分:2)

你想要uksort。太棒了。

uksort($array, function($a, $b) {
  return $a['lly'] - $b['lly']; // might be reverse, I always forget
});
  • usort是'普通'用户排序
  • uksort也会这样做,但维护密钥。使用assoc数组,这似乎很有用。

仅供将来参考,PHP中有许多非常有用的排序器,如natcasesort(),它们对“自然”和不区分大小写进行排序。那些不会像你提到的那样在多维数组中工作。 PHP当然在一个有用的包中具有相同的功能:strnatcasecmp,因此您可以进行u(k)sort回调,利用natcasesort幂。

其他比较功能的功能相同:strncmp

只是说。

答案 1 :(得分:1)

Rudie已经为您的特定情况提供了最佳答案,但是这里有array_multisort

的替代方案
$llx = array();
$lly = array();
foreach ($array as $key => $row) {
    $llx[$key] = $row['llx'];
    $lly[$key] = $row['lly'];
};
array_multisort($lly, SORT_ASC, $llx, $array);