我在解决如何做这件事时遇到了一些问题。 我有一个PHP数组
array(131) {
["BLANF "]=>
array(3) {
["line_3"]=>
string(4) "3.92"
["line_1"]=>
string(1) "6"
["line_2"]=>
string(2) "14"
}
["BLOOH "]=>
array(3) {
["line_3"]=>
string(4) "2.00"
["line_1"]=>
string(1) "20"
["line_2"]=>
string(1) "6"
}
}
我需要根据line_1的值进行排序。在PHP中 谢谢 扎卡里
答案 0 :(得分:3)
通过提供比较回调函数来使用uasort
,该函数比较相应行的值。
答案 1 :(得分:3)
您必须为数组创建自定义比较函数,并将其与 uasort()
一起使用以维护数组的索引。
以下是使用uasort()
按line_1
排序的方法...通过嵌套数组中的任何其他键进行排序很简单。
<?php
// The custom comparison function
function cmp($a, $b)
{
if ($a["line_1"] == $b["line_1"]) {
return 0;
}
return ($a["line_1"] < $b["line_1"]) ? -1 : 1;
}
// Sort the array using your custom comparison
uasort($array, 'cmp');
// Make sure we got the right result
print_r($array);
?>
(我更改了line_1
数字,以便排序实际上有所作为)
在这种情况下,PHP将为您处理类型,但您应该注意您有字符串并将它们转换为数字。如果您不确定会发生什么,那么将字符串转换为浮点数或整数。这一点非常重要,因为PHP可以 compare strings alphabetically with the comparison operators ....所以,如果有任何可能的信件,逗号或某些东西可以潜入您的数组值,那么您可以 {{ 3}} 到int((int) $a["line_1"]
)或float((float) $a["line_1"]
)。