array_push () dengan pasangan nilai kunci

184

Saya memiliki array yang sudah ada yang ingin saya tambahkan nilainya.

Saya mencoba untuk mencapai itu menggunakan array_push()sia-sia.

Di bawah ini adalah kode saya:

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

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

Apa yang ingin saya capai adalah menambahkan cat sebagai kunci pada $dataarray dengan nilai wagon untuk mengaksesnya seperti dalam cuplikan di bawah ini:

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

Bagaimana saya bisa mencapainya?

tuan
sumber

Jawaban:

334

Jadi bagaimana dengan memiliki:

$data['cat']='wagon';
dusoft
sumber
Peringatan: $a['123'] = 456;- string '123' dikonversi ke kunci integer 123.
bancer
Untuk kunci integer Anda tidak ingin membungkusnya menjadi tanda kutip / string.
dusoft
Belum tentu. Jika beberapa kunci lain berupa string seperti '123a', bisa diinginkan untuk menyimpan kunci string untuk semua item.
bancer
51

Jika Anda perlu menambahkan beberapa kunci = nilai, maka coba ini.

$data = array_merge($data, array("cat"=>"wagon","foo"=>"baar"));
Harijs Krūtainis
sumber
1
Bisa juga menggunakan loop untuk itu.
Jack Perry
Perulangan tidak membantu. Jika Anda ingin mendorong nilai dengan nama kunci duplikat, Anda harus menggunakan array_merge.
Richard Smith
38
$data['cat'] = 'wagon';

Itu saja yang Anda butuhkan untuk menambahkan kunci dan nilai ke array.

rogeriopvl
sumber
6

Sebagai contoh:

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

Untuk mengubah nilai kunci:

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

keluaran:

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

Untuk menambahkan pasangan nilai kunci baru:

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

keluaran:

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

Pangeran Patel
sumber
5

Anda tidak perlu menggunakan fungsi array_push (), Anda dapat menetapkan nilai baru dengan kunci baru langsung ke array seperti ..

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


Output:

   Array(
     [color1] => red
     [color2] => blue
     [color3] => green
   )
Deepak Vaishnav
sumber
Anda juga harus menyoroti apa perbedaan sebenarnya, di sini Anda menggunakan = bukan, untuk OP
NitinSingh
1
Kode ini salah. array_push mengambil dua parameter, dan Anda akan mendapatkan peringatan tentang fakta Anda menggunakannya salah dengan hasil bahwa panggilan ke array_push tidak menghasilkan apa-apa. Apa yang sebenarnya dilakukan baris kedua dari kode Anda adalah sederhana $array['color3']='green'. Itulah yang dilakukan @doftoft di atas. Kode Anda hanyalah kebingungan dari solusi itu.
Richard Smith
@RichardSmith terima kasih telah menunjukkan kesalahan saya, saya telah mengubah jawaban saya. :)
Deepak Vaishnav
0

Array ['key'] = nilai;

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

Ini yang kamu butuhkan. Tidak perlu menggunakan fungsi array_push () untuk ini. Beberapa waktu masalahnya sangat sederhana dan kami berpikir dengan cara yang rumit :).

Tuan-Faizan
sumber
-3

Lakukan saja:

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

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

* Di php 7 dan lebih tinggi, array dibuat menggunakan [], bukan ()

xayer
sumber
Dua masalah: array_pushmenambahkan parameter ke-2 + sebagai nilai baru (bukan pasangan nilai kunci seperti array_mergehalnya), dan PHP 7 dengan senang hati menerima array()sintaks array (dan juga []sintaks steno )
Chris Forrence