2011-07-07 28 views
19

Si estoy trabajando con una matriz asociativa como tales:matriz de empuje con matriz asociativa

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

y quiero añadir un elemento al final, yo creo que hacer:

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

Sin embargo, esto me deja con:

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

¿Cómo se puede evitar así que terminan con:

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

¡Muy apreciado!

Respuesta

33

Está utilizando una matriz asociativa por lo que acaba de establecer el par clave/valor como este.

$array["Password"] = pass; 

Creo que es posible que deba revisar la diferencia entre una matriz y una matriz asociativa. Por ejemplo, si me encontré con el mismo mandato con un valor diferente sería sobrescribir la antigua:

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

Dándole este

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

que a juzgar por su pregunta no es lo que estás esperando

4

Las matrices asociativas no están diseñadas para tener sus claves en orden. Se puede añadir un elemento a través

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

Pruebe array_merge lugar:

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

Esto produce la matriz:

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

También puede hacer esto como un acceso directo '$ array + = array ('Password' => 'test');' pero tenga en cuenta que no anulará la contraseña si ya está configurada. Además, personalmente no lo haría. Simplemente parecía un complemento de información. –

4

general, con una matriz asociativa que no tiene control sobre el orden de los elementos.

Los elementos pueden estar en cualquier orden.

Sin embargo, he encontrado que php mantiene el orden en que los agregas.

Así que sólo lo hacen $myarra["name"] = "password"