排序后将元素添加到数组

时间:2012-05-29 08:48:23

标签: php arrays asort

如何在asort()之后将元素添加到起始数组中并保留键?

$array = array(
    564 => "plum",
    123 => "apple",
    543 => "lemon",
    321 => "cherry",
    );
    asort($array);
    $array[0]="all";
    print_r($array);

我知道,key [0]的索引不在开头

Array(
[123] => apple
[321] => cherry
[543] => lemon
[564] => plum
[0] => all )

需要

Array(
[0] => all    
[123] => apple
[321] => cherry
[543] => lemon
[564] => plum)

3 个答案:

答案 0 :(得分:3)

对数组进行排序后,使用array_unshift()将元素添加到数组的开头。

array_unshift($arr, 'all')

<强>更新

请注意array_unshift()将修改所有数字键。要保留密钥,请使用+运算符。

asort($array);
$array = array('all') + $array;
print_r($array);

/*
Array
(
    [0] => all
    [123] => apple
    [321] => cherry
    [543] => lemon
    [564] => plum
)
*/

答案 1 :(得分:1)

$array = array(
    564 => "plum",
    123 => "apple",
    543 => "lemon",
    321 => "cherry",
);
$array[0]="all";
uasort($array, function($a, $b) {
  if ($a === 'all') return -1;
  return strcmp($a, $b);
});
print_r($array);

答案 2 :(得分:0)

在向数组添加值后调用asort() 。如果您可以保证需要添加的项目已经按相反顺序排列并且始终位于数组中已有的项目之前,那么您可以使用$array = array($newitem) + $array

$array = array(
    564 => "plum",
    123 => "apple",
    543 => "lemon",
    321 => "cherry",
);
$array[0]="all";
asort($array);
print_r($array);

输出:

Array
(
    [0] => all
    [123] => apple
    [321] => cherry
    [543] => lemon
    [564] => plum
)

apple之前添加 not 的项目时,这也会有用。