按照索引变量排序的数组

4

我在尝试对一个简单的数组进行排序,这个数组长这样:

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
        )

)

我希望按索引对这个数组进行排序。我使用了ksort(),但它并没有生效,输出结果为1。
3个回答

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

Sort使用传递引用的方式对数组进行排序,返回值为布尔类型的成功或失败。 我猜你正在做这件事。

$myArray = ksort($myArray);

更改为

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

你能把它缩小到 if(!ksort($myArray)) { //失败 } 吗? - Jimbo
大多数人甚至不会测试返回状态,我只在这里包含它是为了演示返回值是成功/失败状态。 - Mark Baker
实际上,如果它失败了,你所能做的并不多,而且它失败的原因可能相当难以理解...在实践中,只有发生一些灾难性的问题时,它才会真正失败,这种情况下ksort()失败将是最小的问题。 - rid
实际上,查看源代码后,我发现只有在pemalloc()失败或函数参数不正确的情况下,ksort()才会失败,在这两种情况下,脚本在ksort()甚至开始返回之前就应该退出。 - rid

0

使用方式如下:

ksort($array);

然后打印

print_r($array);

如果您曾经使用过

print_r(ksort($array));

如果数组已排序,则返回1


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接