如何对关联数组进行排序

时间:2011-06-27 11:42:13

标签: php arrays ksort

我想对以下数组的键进行排序。我使用kso​​rt(),但我不知道如何使用它。有什么想法吗?

<?php
        $a = array(
                'kuy' => 'kuy',
                'apple' => 'apple',
                'thida' => 'thida',
                'vanna' => 'vanna',
                'ravy' => 'ravy'
              );

        $b = ksort($a);
        echo "<pre>";
        print_r($b);
        echo "</pre>";

9 个答案:

答案 0 :(得分:4)

ksort()对数组本身进行排序,但不创建排序副本

$a = array(
  'kuy'   => 'kuy',
  'apple' => 'apple',
  'thida' => 'thida',
  'vanna' => 'vanna',
  'ravy'  => 'ravy'
);

ksort($a);
echo "<pre>";
print_r($a);
echo "</pre>";

答案 1 :(得分:2)

ksort不会返回数组。它只是对原始数组进行排序,并返回bool“成功时返回TRUE,失败时返回FALSE。”

所以你的排序数组是$ a,而不是$ b。 看到这里: http://codepad.org/zMTFTPGf

答案 2 :(得分:2)

您可以在那里找到答案:http://php.net/manual/de/function.ksort.php

使用它就像:

ksort($a);

然后$ a被排序。

答案 3 :(得分:2)

如果您不想保留$ a的原始订单,请使用: -

ksort($a);
print_r($a);

如果你想保留$ a,还想要使用排序版本: -

$b = $a;
ksort($b);
print_r($b);

正如我在评论中所说,手册页非常清楚。 http://www.php.net/manual/en/function.ksort.php

答案 4 :(得分:1)

ksort返回布尔值并对原始数组进行排序,因此您应该打印$a而不是$b,因为$b是ksort返回的布尔值,它是真的或者取决于ksort的结果

ksort($a);    
print_r($a);

答案 5 :(得分:1)

ksort返回一个布尔值 - 排序是否成功。它对数组进行就地排序 - 它更改数组变量而不是返回已排序的副本。

尝试:

ksort($a);
print_r($a);

答案 6 :(得分:1)

ksort通过引用获取其参数并直接修改它,返回值只表示syccess或failure。

答案 7 :(得分:0)

ksort返回一个关于它是否成功的布尔值,它不会返回另一个已排序的数组。它改变了原始数组。

print_r($a);

答案 8 :(得分:0)

正如菲利克斯所说,看一下文档。您还可以查看示例here