我有以下数组:
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中的排序函数,但它们似乎主要关注单维数组,除非我遗漏了某些内容,否则就没有了
答案 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);