2011-07-07 10 views
19

Se sto lavorando con una serie associato, come ad esempio:Array spinta con l'allineamento associato

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

e voglio aggiungere un elemento alla fine, penserei di fare:

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

Tuttavia, questo mi lascia con:

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

Come può essere evitato così finisco con:

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

Molto apprezzato!

risposta

33

Si sta utilizzando un array associativo quindi basta impostare la coppia chiave/valore come questo.

$array["Password"] = pass; 

Penso che potrebbe essere necessario rivedere la differenza tra un array e un array associativo. Per esempio, se ho eseguito di nuovo lo stesso comando con un valore diverso sarebbe sovrascrivere quello vecchio:

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

Dandovi questo

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

che a giudicare dalla tua domanda non è quello che vi aspettate

4

Gli array associativi non sono progettati per avere le chiavi in ​​ordine. È possibile aggiungere un elemento tramite

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

Prova array_merge invece:

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

Questo produce l'array:

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

Puoi anche farlo come scorciatoia '$ array + = array ('Password' => 'test');' ma sii avvisato che non sovrascriverà la Password se già impostata. Inoltre, non lo farei personalmente. Sembrava solo una FYI aggiuntiva. –

4

In generale, con un array associativo non si ha il controllo su l'ordine degli elementi.

Gli elementi possono essere in qualsiasi ordine.

Tuttavia, ho trovato php mantiene l'ordine di aggiungerli.

Quindi basta fare $myarra["name"] = "password"