Push массива с ассоциированным массивом - PullRequest
19 голосов
/ 08 июля 2011

Если я работаю с ассоциированным массивом, например:

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
      )

Очень ценится!

Ответы [ 4 ]

33 голосов
/ 08 июля 2011

Вы используете ассоциативный массив, поэтому вы просто устанавливаете пару ключ / значение следующим образом.

$array["Password"] = pass;

Я думаю, что вам, возможно, потребуется рассмотреть разницу между массивом и ассоциативным массивом. Например, если бы я снова выполнил ту же команду с другим значением, она бы перезаписала старую:

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

Даю вам это

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

Что, судя по вашему вопросу, не соответствует вашим ожиданиям

15 голосов
/ 08 июля 2011

Попробуйте array_merge вместо:

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

Это производит массив:

array('Username' => 'user', 'Email' => 'email', 'Password' => 'pass');
4 голосов
/ 08 июля 2011

Как правило, с ассоциативным массивом у вас нет контроля над порядком элементов.

Элементы могут быть в любом порядке.

Однако я обнаружил, что php сохраняет порядок их добавления.

Так что просто сделайте $myarra["name"] = "password"

4 голосов
/ 08 июля 2011

Ассоциативные массивы не предназначены для того, чтобы их ключи были в порядке. Вы можете добавить элемент через

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