2010-12-23 69 views
5

只是想用array_unshift在我的數組前面添加一個新參數,但是:如果我像往常一樣做,它就有一個數字索引。我該如何拒絕索引,例如類似的東西...PHP: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 
} 

回答

4

看起來像array_unshift不能做你想做的。試試這個:

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

這給出了你想要的結果。

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

使用array_merge

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

爲什麼你必須使用array_merge而不是array_unshift的原因是因爲後者只適用於數字索引的數組。

+0

是的,我知道,但我怎麼能用array_unshift添加一個字符串作爲索引的元素? – 2010-12-23 07:30:47

+0

@Florian更新了我的答案。 – 2010-12-23 07:33:26

+0

你不能。 array_unshift僅適用於數字數組。 array_merge有什麼問題? – weltraumpirat 2010-12-23 07:34:40

10

array_pusharray_poparray_shiftarray_unshift被設計用於數字陣列。

可以使用array_merge解決方案,有些人已經提到的一個,或者你可以使用數組+操作:

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

注:當使用array_merge相同的按鍵的項目從第二陣列將覆蓋從第一個,那麼如果'前'已經存在$queue它不會被覆蓋,但只有前面。另一方面,如果您使用+,則新值將出現在結果中並位於前面。