PHP:Array_unshift不是数字索引

时间:2010-12-23 07:24:10

标签: php arrays

只是想用array_unshift在我的数组前面添加一个新参数,但是:如果我像往常一样,它有一个数字索引。如何拒绝索引,例如类似的东西...

<?php
$queue = array("a", "B");
array_unshift($queue, "front" => "hello" ); //Not working, this is my question ;)
?>

然后数组看起来像

Array {
    front => hello
    0 => a
    1 => B
}

3 个答案:

答案 0 :(得分:11)

array_pusharray_poparray_shiftarray_unshift专为数字数组设计。

您可以使用某些人已经提及的array_merge解决方案之一,或者您可以将+运算符用于数组:

$queue = array('front' => 'Hello') + $queue;

注意:当使用array_merge时,第二个数组中具有相同键的项将覆盖第一个数组中的项,因此如果$queue中已存在“前”,则不会被覆盖,但只被带到前面。另一方面,如果您使用+,新值将出现在结果中并位于前面。

答案 1 :(得分:4)

看起来array_unshift无法做你想做的事。试试这个:

$queue = array('a', 'B');
$queue = array_merge(array('front' => 'hello'), $queue);

这会得到你想要的结果。

Array
(
    [front] => hello
    [0] => a
    [1] => b
)

答案 2 :(得分:2)

使用array_merge

$new_queue = array_merge(array("front"=>"hello"), $queue); 

您必须使用array_merge而不是array_unshift的原因是因为后者仅适用于数字索引数组。