Push массива с ассоциированным массивом

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

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 ответа

Решение

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

$array["Password"] = pass;

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

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

Давая вам это

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

Который, судя по вашему вопросу, не то, что вы ожидаете

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

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам