array_push () с парой ключ-значение

184

У меня есть существующий массив, к которому я хочу добавить значение.

Я пытаюсь добиться этого, используя array_push()безрезультатно.

Ниже мой код:

$data = array(
    "dog" => "cat"
);

array_push($data['cat'], 'wagon');

Я хочу добавить cat в качестве ключа к $dataмассиву со значением wagon, чтобы получить к нему доступ, как показано ниже:

echo $data['cat']; // the expected output is: wagon

Как я могу этого достичь?

Mistero
источник

Ответы:

334

Так что насчет того, чтобы:

$data['cat']='wagon';
dusoft
источник
Предупреждение: $a['123'] = 456;- строка '123' преобразуется в целочисленный ключ 123.
bancer
Для целочисленных ключей вы не хотите заключать их в кавычки / строки.
dusoft
Не обязательно. Если некоторые другие ключи являются строками, такими как «123a», может быть желательно сохранить строковые ключи для всех элементов.
Bancer
51

Если вам нужно добавить несколько ключей => значение, попробуйте это.

$data = array_merge($data, array("cat"=>"wagon","foo"=>"baar"));
Харийс Крутейнис
источник
1
Можно также использовать цикл для этого.
Джек Перри
Петля не помогает. Если вы хотите отправить значения с повторяющимся именем ключа, вы должны использовать array_merge.
Ричард Смит
38
$data['cat'] = 'wagon';

Это все, что вам нужно, чтобы добавить ключ и значение в массив.

rogeriopvl
источник
6

Например:

$data = array('firstKey' => 'firstValue', 'secondKey' => 'secondValue');

Для изменения значения ключа:

$data['firstKey'] = 'changedValue'; 
//this will change value of firstKey because firstkey is available in array

вывод:

Array ([firstKey] => updatedValue [secondKey] => secondValue)

Для добавления новой пары ключ-значение:

$data['newKey'] = 'newValue'; 
//this will add new key and value because newKey is not available in array

вывод:

Array ([firstKey] => firstValue [secondKey] => secondValue [newKey] => newValue)

Принц Патель
источник
5

Вам не нужно использовать функцию array_push (), вы можете назначить новое значение с новым ключом непосредственно в массив, как ..

$array = array("color1"=>"red", "color2"=>"blue");
$array['color3']='green';
print_r($array);


Output:

   Array(
     [color1] => red
     [color2] => blue
     [color3] => green
   )
Дипак Вайшнав
источник
Вы должны также подчеркнуть , что это точная разница, здесь используется = вместо, для ОПА
NitinSingh
1
Этот код неверен. Аргумент array_push принимает два параметра, и вы получите предупреждение о том, что вы используете его неправильно, в результате чего вызов array_push ничего не делает. То, что фактически делает вторая строка вашего кода, просто $array['color3']='green'. Это именно то, что @dusoft сделал выше. Ваш код - просто запутанность этого решения.
Ричард Смит
@RichardSmith спасибо, что показали мою ошибку, я изменил свой ответ. :)
Дипак Вайшнав
0

Array ['key'] = значение;

$data['cat'] = 'wagon';

Это то, что вам нужно. Для этого не нужно использовать функцию array_push (). Некоторое время проблема очень проста, и мы думаем сложным образом :).

Mr-Faizan
источник
-3

Просто сделай это:

$data = [
    "dog" => "cat"
];

array_push($data, ['cat' => 'wagon']);

* В php 7 и выше, массив создается с использованием [], а не ()

xayer
источник
Две проблемы: array_pushдобавляет свои 2-и + параметры в качестве новых значений (а не пары ключ-значение, как array_mergeделает), и PHP 7 с радостью принимает array()синтаксис массива (а также сокращенный []синтаксис)
Крис Форренс