多数组排序PHP

时间:2010-09-15 16:24:51

标签: php sorting multidimensional-array

我在解决如何做这件事时遇到了一些问题。 我有一个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中 谢谢 扎卡里

2 个答案:

答案 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);
?>

Live Example

(我更改了line_1数字,以便排序实际上有所作为)

在这种情况下,PHP将为您处理类型,但您应该注意您有字符串并将它们转换为数字。如果您不确定会发生什么,那么将字符串转换为浮点数或整数。这一点非常重要,因为PHP可以 compare strings alphabetically with the comparison operators ....所以,如果有任何可能的信件,逗号或某些东西可以潜入您的数组值,那么您可以 {{ 3}} 到int((int) $a["line_1"])或float((float) $a["line_1"])。