array_push () พร้อมคู่ค่าคีย์


183

ฉันมีอาร์เรย์ที่มีอยู่ซึ่งฉันต้องการเพิ่มค่า

ฉันพยายามที่จะบรรลุถึงการใช้array_push()ที่ไม่มีประโยชน์

ด้านล่างเป็นรหัสของฉัน:

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

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

สิ่งที่ฉันต้องการบรรลุคือการเพิ่มcatเป็นกุญแจสำคัญใน$dataอาร์เรย์ที่มีwagonเป็นค่าเพื่อที่จะเข้าถึงได้เหมือนในตัวอย่างด้านล่าง:

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

ฉันจะบรรลุสิ่งนั้นได้อย่างไร

คำตอบ:


334

แล้วมีอะไร:

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

คำเตือน: $a['123'] = 456;- สตริง '123' ถูกแปลงเป็นคีย์เลขจำนวนเต็ม 123
bancer

สำหรับคีย์จำนวนเต็มคุณไม่ต้องการรวมคำเหล่านั้นลงในเครื่องหมายคำพูด / สตริง
dusoft

ไม่จำเป็น. หากบางคีย์อื่น ๆ เป็นสตริงเช่น '123a' คุณอาจต้องการสงวนคีย์สตริงสำหรับรายการทั้งหมด
bancer

51

หากคุณต้องการเพิ่มหลายคีย์ => ค่าลองสิ่งนี้

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

1
ยังสามารถใช้การวนซ้ำสำหรับสิ่งนั้นได้
Jack Perry

การวนซ้ำไม่ช่วย หากคุณต้องการที่จะผลักดันค่าที่มีชื่อซ้ำกันที่สำคัญคุณต้องarray_mergeใช้
Richard Smith

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

เอาท์พุท:

Array ([firstKey] => เปลี่ยนแปลงค่า [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
   )

คุณควรเน้นว่าอะไรคือความแตกต่างที่แน่นอนที่นี่คุณใช้ = แทนสำหรับ OP
NitinSingh

1
รหัสนี้ผิด array_push ใช้สองพารามิเตอร์และคุณจะได้รับคำเตือนเกี่ยวกับความจริงที่ว่าคุณใช้ผิดกับผลลัพธ์ที่การเรียกไปยัง array_push ไม่ได้ทำอะไรเลย $array['color3']='green'สิ่งที่บรรทัดที่สองของรหัสของคุณเป็นจริงทำก็คือ นั่นคือสิ่งที่ @dusoft ทำข้างบน รหัสของคุณเป็นเพียงการทำให้งงงวยของการแก้ปัญหานั้น
Richard Smith

@RichardSmith ขอบคุณที่แสดงความผิดพลาดของฉันฉันได้เปลี่ยนคำตอบแล้ว :)
Deepak Vaishnav

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()ไวยากรณ์ของอาร์เรย์อย่างมีความสุข(เช่นเดียวกับ[]ไวยากรณ์ชวเลข)
Chris Forrence
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.