数组按索引变量排序

时间:2012-11-19 10:12:18

标签: php multidimensional-array sorting

我在排序一个看起来像这样的简单数组时遇到了一些困难:

Array
(
    [3] => Array
        (
            [0] => EU West (Ireland)
            [1] => eu-west-1
        )

    [7] => Array
        (
            [0] => South America (Sao paulo)
            [1] => sa-east-1
        )

    [0] => Array
        (
            [0] => US East (Virginia)
            [1] => us-east-1
        )

    [4] => Array
        (
            [0] => Asia Pasific (Tokyo)
            [1] => ap-northeast-1
        )

    [2] => Array
        (
            [0] => US West (Oregon)
            [1] => us-west-2
        )

    [1] => Array
        (
            [0] => US West (N. California)
            [1] => us-west-1
        )

    [5] => Array
        (
            [0] => Asia Pasific (Singapore)
            [1] => ap-southeast-1
        )

    [6] => Array
        (
            [0] => Asia Pasific (Sydney)
            [1] => ap-southeast-2
        )

)

我想在Index上对这个数组进行排序。我使用ksort()但它不起作用,它留下了输出1。

3 个答案:

答案 0 :(得分:6)

ksort()不返回已排序的数组,而是对数组进行排序。致电ksort($array)后,$array的内容将被排序。该函数返回排序是否成功。

示例:

$array = array(1 => 1, 20 => 1, 5 => 1);

echo "Before ksort():\n";
print_r($array);

if (ksort($array)) {
    echo "ksort() completed successfully.\n";
}

echo "After ksort():\n";
print_r($array);

以上版画:

Before ksort():
Array
(
    [1] => 1
    [20] => 1
    [5] => 1
)
ksort() completed successfully.
After ksort():
Array
(
    [1] => 1
    [5] => 1
    [20] => 1
)

您不应该检查ksort()的返回值,因为ksort()只能在它甚至无法返回失败的情况下失败。因此,函数将返回true或脚本将死亡,在这种情况下返回值是无关的(它将始终为true)。

答案 1 :(得分:1)

Sort使用数组的pass-by-reference,返回值是布尔成功或失败。 我假设你正在做

$myArray = ksort($myArray);

更改为

$sorted = ksort($myArray);
if (!$sorted) {
    echo 'Failed to sort';
}

答案 2 :(得分:0)

使用

ksort($array);

在那次印刷之后

print_r($array);

如果您已经使用过

print_r(ksort($array));

然后如果数组已排序,它将返回1