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"