array_push () з парою значень ключових


183

У мене є існуючий масив, до якого я хочу додати значення.

Я намагаюся цього досягти array_push()безрезультатно.

Нижче мій код:

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

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

Що я хочу досягти - це додати cat як ключ до $dataмасиву з вагоном як значення, щоб отримати доступ до нього, як у фрагменті нижче:

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

Як я можу цього досягти?

Відповіді:


334

Отже, що робити:

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

Попередження: $a['123'] = 456;- рядок '123' перетворюється на цілий ключ 123.
bancer

Для цілих ключів ви не хочете обертати їх у лапки / рядки.
сутінки

Не обов'язково. Якщо деякі інші клавіші є рядками типу "123a", можна зберегти рядкові клавіші для всіх елементів.
bancer

51

Якщо вам потрібно додати декілька значень key =>, спробуйте це.

$data = array_merge($data, array("cat"=>"wagon","foo"=>"baar"));

1
Можна також використовувати цикл для цього.
Джек Перрі

Петля не допомагає. Якщо ви хочете натиснути значення з повторюваним іменем ключа, ви повинні використовувати array_merge.
Річард Сміт

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

Це все, що потрібно, щоб додати ключ і значення до масиву.


6

Наприклад:

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

Для зміни ключового значення:

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

вихід:

Масив ([firstKey] => зміненоValue [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 (). Деякий час проблема дуже проста, і ми думаємо комплексно :).


-3

Просто зробіть це:

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

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

* У php 7 і вище, масив створюється за допомогою [], а не ()


Дві проблеми: array_pushдодає свої 2-й параметри як нові значення (не поєднання ключових значень, як array_mergeце робиться), і PHP 7 із задоволенням приймає array()синтаксис масиву (а також []синтаксис скорочень )
Кріс Форренс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.