anahtar / değer çiftiyle array_push ()


184

Ben bir değer eklemek istediğiniz varolan bir dizi var.

Bunu array_push()boşuna kullanarak elde etmeye çalışıyorum .

Kodum aşağıdadır:

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

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

Ne elde etmek istiyorum aşağıdaki snippet'te olduğu gibi erişmek için değer olarak vagon ile diziye bir anahtar olarak kedi eklemektir :$data

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

Bunu nasıl başarabilirim?

Yanıtlar:


334

Peki ya sahip olmak:

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

Uyarı: $a['123'] = 456;- '123' dizesi tamsayı anahtarına 123 dönüştürülür.
bancer

Tam sayı anahtarları için bunları tırnak / dizgiye sarmak istemezsiniz.
dusoft

Şart değil. Diğer anahtarlar '123a' gibi dizeler ise, tüm öğeler için dize anahtarlarını korumak istenebilir.
bancer

51

Birden fazla key => değeri eklemeniz gerekiyorsa, bunu deneyin.

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

1
Bunun için bir döngü de kullanılabilir.
Jack Perry

Bir döngü yardımcı olmaz. Yinelenen bir anahtar adıyla değerleri göndermek istiyorsanız , şunu kullanmalısınız array_merge.
Richard Smith

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

Diziye anahtar ve değer eklemek için ihtiyacınız olan tek şey bu.


6

Örneğin:

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

Anahtar değerini değiştirmek için:

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

çıktı:

Dizi ([firstKey] => değişenDeğeri [secondKey] => ikinciDeğer)

Yeni anahtar / değer çifti eklemek için:

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

çıktı:

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


5

Array_push () işlevini kullanmanıza gerek yoktur, yeni anahtarla yeni değeri doğrudan diziye atayabilirsiniz.

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


Output:

   Array(
     [color1] => red
     [color2] => blue
     [color3] => green
   )

Ayrıca kesin farkın ne olduğunu da vurgulamalısınız, burada kullandığınız = OP yerine
NitinSingh

1
Bu kod yanlış. array_push iki parametre alır ve array_push'a yapılan çağrının hiçbir şey yapmaması sonucu yanlış kullandığınız gerçeğiyle ilgili bir uyarı alırsınız. Kodunuzun ikinci satırının gerçekte yaptığı şey basitçe $array['color3']='green'. @Dusoft'un yukarıda yaptığı da aynen buydu. Kodunuz sadece bu çözümün gizliliğidir.
Richard Smith

@RichardSmith hatamı gösterdiğiniz için teşekkür ederim, cevabımı değiştirdim. :)
Deepak Vaishnav

0

Dizi ['anahtar'] = değer;

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

İhtiyacın olan şey bu. Bunun için array_push () işlevini kullanmaya gerek yoktur. Bir zamanlar sorun çok basit ve karmaşık bir şekilde düşünüyoruz :).


-3

Sadece şunu yap:

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

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

* Php 7 ve sonraki sürümlerinde dizi () değil, [] kullanılarak oluşturuluyor


İki sorun: array_push2. + parametrelerini yeni değerler olarak ekler (anahtar / değer çiftlerini değil array_merge) ve PHP 7 array()dizi sözdizimini (steno []sözdiziminin yanı sıra ) memnuniyetle kabul eder
Chris Forrence
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.