Làm thế nào để thêm các phần tử vào một mảng trống trong PHP?


488

Nếu tôi xác định một mảng trong PHP, chẳng hạn như (tôi không xác định kích thước của nó):

$cart = array();

Tôi chỉ đơn giản là thêm các yếu tố cho nó bằng cách sử dụng sau đây?

$cart[] = 13;
$cart[] = "foo";
$cart[] = obj;

Không có mảng trong PHP có một phương thức add, ví dụ , cart.add(13)?

Câu trả lời:


802

Cả hai array_pushvà phương pháp bạn mô tả sẽ làm việc.

$cart = array();
$cart[] = 13;
$cart[] = 14;
// etc

//Above is correct. but below one is for further understanding
$cart = array();
for($i=0;$i<=5;$i++){
    $cart[] = $i;  
}
echo "<pre>";
print_r($cart);
echo "</pre>";

Giống như:

<?php
$cart = array();
array_push($cart, 13);
array_push($cart, 14);

// Or 
$cart = array();
array_push($cart, 13, 14);
?>

178
Như đã nêu trong tài liệu PHP, nếu bạn chỉ đẩy một phần tử mỗi lần (như trong một vòng lặp) hoặc một phần tử một lần, thì tốt nhất là sử dụng $cart[] = 13phương thức không chỉ bởi vì nó ít ký tự để thực hiện cùng một thao tác, nhưng nó cũng không áp đặt chi phí hiệu năng của một lệnh gọi hàm, mà mảng_push () sẽ làm. Chỉnh sửa: Nhưng, câu trả lời tuyệt vời. Hiệu quả tương tự, và phần lớn việc sử dụng thậm chí sẽ không nhận thấy sự khác biệt về hiệu suất, nhưng giúp biết được những sắc thái đó.
Mattygabe

67
Có phải chỉ tôi hoặc $cart[]=...cú pháp, thoạt nhìn, trông giống như một phép gán biến và không phải là một mảng_push ẩn?
Brad Hein

6
Nó chắc chắn làm với tôi. Tôi sẽ không nhớ một lời giải thích tại sao nó không phải là một bài tập.
limeandcocovy

4
$ giỏ hàng [] = 13; nhanh hơn. có ít nhân vật và trông tốt hơn.
Gal Bracha

19
Tôi sẽ chỉ đưa ra quan điểm thay thế của mình rằng thật khó hiểu khi các lập trình viên ngôn ngữ khác đọc cú pháp của giỏ hàng [] = ..., tôi đã có kinh nghiệm với rất nhiều ngôn ngữ và tôi không bao giờ đoán đó là ngôn ngữ gì.
Erti-Chris Eelmaa

75

Tốt hơn hết là không sử dụng array_pushvà chỉ sử dụng những gì bạn đề xuất. Các chức năng chỉ cần thêm chi phí.

//We don't need to define the array, but in many cases it's the best solution.
$cart = array();

//Automatic new integer key higher than the highest 
//existing integer key in the array, starts at 0.
$cart[] = 13;
$cart[] = 'text';

//Numeric key
$cart[4] = $object;

//Text key (assoc)
$cart['key'] = 'test';

11
"Nếu bạn thêm nhiều giá trị vào một mảng trong một vòng lặp, thì việc sử dụng Array_push sẽ nhanh hơn so với lặp lại [] = statement" php.net/manual/en/feft.array-push.php#84959
Ollie Glass

3
Hoàn toàn chính xác nếu trường hợp sử dụng của bạn đang thêm một mục hoặc từng mục một. Nếu tất cả các giá trị được biết cùng một lúc, có lẽ tốt nhất là chỉ sử dụng ký hiệu Array_push tùy thuộc vào số lượng mục phải được thêm vào để gõ lại tên mảng mỗi lần có thể gây trở ngại về hiệu năng hơn so với lệnh gọi hàm trên không. Như mọi khi, sự phán xét nên được thực hiện khi lựa chọn. Câu trả lời tốt!
Mattygabe

2
Câu trả lời này là đầy đủ nhất.
Lokiare

10

Bạn có thể sử dụng mảng_push . Nó thêm các phần tử vào cuối mảng, giống như trong một ngăn xếp.

Bạn cũng có thể làm nó như thế này:

$cart = array(13, "foo", $obj);

10

Dựa trên kinh nghiệm của tôi, giải pháp của bạn là tốt (tốt nhất) khi các phím không quan trọng:

$cart = [];
$cart[] = 13;
$cart[] = "foo";
$cart[] = obj;

2

HÃY NHỚ, phương pháp này ghi đè lên mảng đầu tiên, vì vậy chỉ sử dụng khi bạn chắc chắn!

$arr1 = $arr1 + $arr2;

( xem nguồn )


1
Tại sao downvote, ai đó có thể giải thích tại sao điều này là xấu? Có bất an không?
Sandy

4
@SandyBeach không phải là một câu trả lời
mateos

2
$cart = array();
$cart[] = 11;
$cart[] = 15;

// etc

//Above is correct. but below one is for further understanding

$cart = array();
for($i = 0; $i <= 5; $i++){
          $cart[] = $i;  

//if you write $cart = [$i]; you will only take last $i value as first element in array.

}
echo "<pre>";
print_r($cart);
echo "</pre>";

$ giỏ hàng [] = $ i; - phần mã đó thêm các phần tử vào mảng ----> $ cart = [$ i]; - điều này sẽ vượt qua trình biên dịch nhưng bạn sẽ không có được những gì bạn muốn
unsuggeDloop

0
$products_arr["passenger_details"]=array();
array_push($products_arr["passenger_details"],array("Name"=>"Isuru Eshan","E-Mail"=>"isuru.eshan@gmail.com"));
echo "<pre>";
echo json_encode($products_arr,JSON_PRETTY_PRINT);
echo "</pre>";

//OR

$countries = array();
$countries["DK"] = array("code"=>"DK","name"=>"Denmark","d_code"=>"+45");
$countries["DJ"] = array("code"=>"DJ","name"=>"Djibouti","d_code"=>"+253");
$countries["DM"] = array("code"=>"DM","name"=>"Dominica","d_code"=>"+1");
foreach ($countries as $country){
echo "<pre>";
echo print_r($country);
echo "</pre>";
}

-1

Khi một người muốn các phần tử được thêm vào bằng cách lập chỉ mục phần tử dựa trên zero, tôi đoán điều này cũng sẽ hoạt động:

// adding elements to an array with zero-based index
$matrix= array();
$matrix[count($matrix)]= 'element 1';
$matrix[count($matrix)]= 'element 2';
...
$matrix[count($matrix)]= 'element N';
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.