排序后将元素添加到数组中


Add element to array after sorting

如何在asort()后将元素添加到开头数组 使用保留键?

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

我得到,键 [0] 的索引不在开头

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

需要

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

对数组进行排序后,使用 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
)
*/
$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);
在向

数组中添加值调用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 之前的项目时也有效。