2011-07-07 14 views
19

Jeśli pracuję z stowarzyszonego tablicy jak takie:Array Push z stowarzyszonego tablicy

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

i chcę dodać element do końca, to myślę zrobić:

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

jednak ta pozostawia mnie:

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

Jak można tego uniknąć, więc skończyć z:

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

Bardzo doceniane!

Odpowiedz

33

Używasz asocjacyjną więc wystarczy ustawić parę klucz/wartość takiego.

$array["Password"] = pass; 

Myślę, że być może trzeba będzie przejrzeć różnicę między tablicą a tablicą asocjacyjną. Na przykład, gdybym prowadził samo polecenie ponownie z inną wartością byłoby zastąpić stary:

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

Dając ten

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

Które sądząc pytaniem nie jest to, czego spodziewacie

4

Tablice asocjacyjne nie są zaprojektowane tak, aby ich klucze były uporządkowane. Można dodać element poprzez

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

Wypróbuj array_merge zamiast:

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

ta produkuje tablicy:

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

Możesz to również zrobić jako skrót '$ array + = array ('Hasło' => 'test');' ale ostrzegaj, że nie zastąpi hasła, jeśli jest już ustawione. Ponadto nie zrobiłbym tego osobiście. Wydawało się, że jestem dodatkowym FYI. –

4

Generalnie z tablicy asocjacyjnej nie masz kontroli nad kolejność elementów.

Elementy mogą być w dowolnej kolejności.

Jednak znalazłem php zachowuje kolejność ich dodania.

Więc po prostu zrobić $myarra["name"] = "password"