mảng_push () với cặp giá trị khóa


183

Tôi có một mảng hiện có mà tôi muốn thêm một giá trị.

Tôi đang cố gắng để đạt được điều đó bằng cách sử dụng array_push()vô ích.

Dưới đây là mã của tôi:

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

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

Những gì tôi muốn đạt được là thêm cat làm khóa cho $datamảng với giá trị wagon làm giá trị để truy cập nó như trong đoạn trích dưới đây:

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

Làm thế nào tôi có thể đạt được điều đó?

Câu trả lời:


332

Vì vậy, những gì về có:

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

49

Nếu bạn cần thêm nhiều khóa => giá trị, thì hãy thử điều này.

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

1
Cũng có thể sử dụng một vòng lặp cho điều đó.
Jack Perry

Một vòng lặp không giúp được gì. Nếu bạn muốn đẩy các giá trị bằng một tên khóa trùng lặp, bạn phải sử dụng array_merge.
Richard Smith

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

Đó là tất cả những gì bạn cần để thêm khóa và giá trị vào mảng.


6

Ví dụ:

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

Để thay đổi giá trị khóa:

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

đầu ra:

Mảng ([FirstKey] => đã thay đổiValue [secondKey] => secondValue)

Để thêm cặp giá trị khóa mới:

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

đầu ra:

Mảng ([firstKey] => firstValue [secondKey] => secondValue [newKey] => newValue)


5

Bạn không cần sử dụng hàm Array_push (), bạn có thể gán giá trị mới với khóa mới trực tiếp cho mảng như ..

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


Output:

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

Bạn cũng nên làm nổi bật sự khác biệt chính xác, ở đây bạn đã sử dụng = thay vì, cho OP
NitinSingh

1
Mã này là sai. mảng_push có hai tham số và bạn sẽ nhận được cảnh báo về thực tế bạn đang sử dụng sai với kết quả là cuộc gọi đến mảng_push không làm gì cả. Những gì dòng thứ hai của mã của bạn thực sự đang làm chỉ đơn giản là $array['color3']='green'. Đó chính xác là những gì @dusoft đã làm ở trên. Mã của bạn chỉ là một sự xáo trộn của giải pháp đó.
Richard Smith

@RichardSmith cảm ơn bạn đã cho thấy lỗi lầm của tôi, tôi đã thay đổi câu trả lời của tôi. :)
Deepak Vaishnav

0

Mảng ['key'] = value;

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

Đây là những gì bạn cần. Không cần sử dụng hàm Array_push () cho việc này. Đôi khi vấn đề rất đơn giản và chúng tôi nghĩ theo cách phức tạp :).


-3

Chỉ cần làm điều đó:

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

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

* Trong php 7 trở lên, mảng được tạo bằng [], không phải ()


Hai vấn đề: array_pushthêm các tham số thứ 2 + của nó làm giá trị mới (không phải ghép cặp giá trị khóa array_merge) và PHP 7 vui vẻ chấp nhận array()cú pháp mảng (cũng như []cú pháp tốc ký )
Chris Forrence
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.