2011-07-07 139 views
19

如果我有聯繫的數組像這樣的工作:陣推與關聯數組

Array ([Username] => user 
     [Email] => email 
    ) 

,我想一個元素添加到了最後,我想這樣做:

array_push($array, array('Password' => 'pass')); 

然而,這給我留下了:

Array ([Username] => user 
     [Email] => email 
     Array ([Password] => pass) 
    ) 

這怎麼可能避免這樣我結束了:

Array ([Username] => user 
     [Email] => email 
     [Password] => pass 
    ) 

非常感謝!

回答

33

您正在使用的關聯數組,所以你剛纔設置的鍵/值對這樣的。我想你可能需要回顧一下數組和關聯數組之間的區別。例如,如果我再次運行相同的命令用不同的值會覆蓋舊的:

$array["Password"] = "overwritten"; 

給你這個

Array ([Username] => user 
     [Email] => email 
     [Password] => "overwritten" 
    ) 

由你的問題判斷是不是你的期望是什麼

4

關聯數組的設計不是按順序排列鍵。您可以通過

$array['Password'] = 'pass'; 
15

添加元素試用array_merge代替:

$array = array('Username' => 'user', 'Email' => 'email'); 
$array = array_merge($array, array('Password' => 'pass')); 

這將產生數組:

array('Username' => 'user', 'Email' => 'email', 'Password' => 'pass'); 
+0

你也可以這樣做,作爲一個快捷方式'$ array + = array('Password'=>'test');'但是要注意,如果已經設置,它不會覆蓋密碼。另外,我不會親自去做。只是看起來像一個附加的FYI。 –

4

一般來說,你不擁有控制權的關聯數組元素的順序。

元素可以以任何順序。

但是我發現PHP保持您添加它們的順序。

所以只是做$myarra["name"] = "password"