对数组进行排序并分配新的数字键?

时间:2009-12-23 00:49:10

标签: php arrays sorting

我有一个这样的数组(在我取消一些元素之后):

$array[3] = 'apple';
$array[5] = 'pear';
$array[23] = 'banana';

我用哪个函数对它们进行排序:

$array[0] = 'apple';
$array[1] = 'pear';
$array[2] = 'banana';

我尝试了一些排序功能,但它没有用。

4 个答案:

答案 0 :(得分:18)

我不是100%肯定你的意图。要简单地根据对数组进行排序,但指定新密钥,请使用sort()

sort($array);
print_r($array);
使用此特定功能

不保留键。输出:

Array
(
    [0] => apple
    [1] => banana
    [2] => pear
)

但是如果你想按键值对数组进行排序,请使用ksort()

ksort($array);
print_r($array);

输出:

Array
(
    [3] => apple
    [5] => pear
    [23] => banana
)

然而,这将保留密钥。要从0开始重新分配数组的键,请在结果上使用array_values()

ksort($array);
$array_with_new_keys = array_values($array); // sorted by original key order
print_r($array_with_new_keys);

输出:

Array
(
    [0] => apple
    [1] => pear
    [2] => banana
)

答案 1 :(得分:8)

ksort()将按键排序,然后使用array_values()获取值,这将创建一个包含从0n-1的键的新数组。

ksort($array)
$array = array_values( $array );

当然,如果已经按键排序,则不需要ksort。你也可以直接使用array_values()。

答案 2 :(得分:4)

$arrayOne = array('one','two','three'); //You set an array with certain elements
unset($array[1]);                       //You unset one or more elements.
$arrayTwo = array_values($arrayOnw);    //You reindex the array into a new one.

print_r($arrayTwo);                     //Print for prove.

print_r结果为:

Array ( [0] => one [1] => three )

答案 3 :(得分:-2)

要按值排序,请按住键...

asort($array);