2017-07-20 67 views
-1
$c=array("a"=>"blue","b"=>"green"); 
array_push($c,$c["d"]="red"); 
print_r($c); 

此代碼將鍵添加到數組中。但它也將索引鍵添加到相同的鍵/值對..如何避免此索引鍵? 輸出:如何添加密鑰到php數組?

Array 
(
    [a] => blue 
    [b] => green 
    [d] => red 
    [0] => red 
) 
+8

array_push不作出關聯數組,僅索引的數組任何意義。 – GordonM

+0

想知道爲什麼這個問題是downvoted!它很明顯,並顯示了代碼 –

回答

3

只需添加新密鑰。

$c["y"] = "yellow"; 
3

您可以通過這種方式加入更多的元素:

$array = array("a"=>"blue","b"=>"green"); 
$array['c'] = 'red'; 
+0

嘗試其工作..謝謝你..我們可以使用array_push()做同樣的事情嗎? – vaishu

+0

@vaishu你不能 – apokryfos

+0

@vaishu你不能,'array_push'是用於非索引數組(並且應該用於添加多個值,對於單個值,最好以這種方式使用它) – Yupik

3

您是否嘗試過簡單地使用$c['d'] = 'red';

5

不要在這裏使用array_push()這是沒有必要的。 只需添加新的鍵值。

$c= array("a"=>"blue","b"=>"green"); 
$c['d'] = 'red'; 
5

只需添加其他鍵值這樣

$c=array("a"=>"blue","b"=>"green"); 
$c["d"]="red"; 
print_r($c); 

出放爲

Array ([a] => blue [b] => green [d] => red) 
2

不喜歡它的,

$c=array("a"=>"blue","b"=>"green"); 
$c["d"]="red"; 
echo "<pre>"; 
print_r($c); 

和輸出一樣,

Array 
(
    [a] => blue 
    [b] => green 
    [d] => red 
) 
2

推新鍵值對到陣列中,像這樣:

$c["d"] = "red"; 

鍵沒有找到陣內將得到建立。

1

array_push基本上是一種將數組視爲堆棧的操作。堆棧沒有密鑰,所以使用array_push的關聯數組沒有任何意義(因爲無論如何您都無法使用array_pop來檢索密鑰)。

如果要模擬的array_push行爲,它允許同時添加多個條目,你可以做到以下幾點:

$c = array_merge($c, [ "d" => "red", "e" => "some other colour" ]); 
2

除了別人:你可以把元素的數組,但有沒有記錄的方式(http://php.net/array_push)選擇您自己的密鑰。因此array_push本身使用數字索引。

關聯數組的一種可能替代方法是使用(匿名)對象(stdClass)。在這種情況下,您可以設置屬性,並且它有更多的OOP編碼風格。

$foo = new stdClass; 
$foo->bar = 1; 

var_dump($foo); 

// if you really want to use it as array, you can cast it 
var_dump((array) $foo); 
-1
$arrayName = array(
    'bb' => 'aaaa', 
    'cc' => 'dddd', 
    'dd' => 'xxxx', 
    'aa' => 'yyyy', 
    'ee' => 'rrrr'); 

$arrayname = ['aaaa','dddd','xxxx','yyyy','rrrr']; 

這個鍵是數字,相同

$arrayName = array(
    0 => 'aaaa', 
    1 => 'dddd', 
    2 => 'xxxx', 
    3 => 'yyyy', 
    4 => 'rrrr');