2009-03-24 72 views

Trả lời

567

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

<?php 
$cart = array(); 
$cart[] = 13; 
$cart[] = 14; 
// etc 
?> 

là giống như:

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

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

Như đã nêu trong tài liệu hướng dẫn PHP, nếu bạn chỉ đẩy một phần tử duy nhất mỗi lần (như trong vòng lặp) hoặc một phần tử một lần, tốt nhất là sử dụng phương thức '$ cart [] = 13' không chỉ vì nó ít ký tự hơn để thực hiện thao tác đó, nhưng nó cũng không áp đặt chi phí hoạt động của một cuộc gọi hàm, mà array_push() sẽ. Edit: Nhưng, câu trả lời tuyệt vời. Hiệu quả như nhau, và phần lớn các công 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 những sắc thái đó. – Mattygabe

+38

Chỉ là tôi hay cú pháp '$ cart [] = ...', ngay từ cái nhìn đầu tiên, trông giống như một phép gán biến và không phải là một mảng array_push ngầm định? –

+3

Nó chắc chắn làm cho tôi. Tôi sẽ không để ý giải thích tại sao nó không phải là một bài tập. – BrassApparatus

6

Bạn có thể sử dụng array_push. Nó thêm các phần tử vào cuối mảng, như trong một chồng.

Bạn có thể cũng đã thực hiện nó như thế này:

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

Nó tốt hơn để không sử dụng array_push và chỉ sử dụng những gì bạn đề nghị. Các chức năng chỉ cần thêm 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'; 
+5

"Nếu bạn đang thêm nhiều giá trị vào một mảng trong một vòng lặp, sẽ nhanh hơn khi sử dụng array_push hơn lặp lại [] = câu lệnh" http://www.php.net/manual/en/function.array-push.php# 84959 –

+1

Hoàn toàn chính xác nếu trường hợp sử dụng của bạn thêm một mục hoặc một mục tại một thời điểm. 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ý pháp array_push tùy thuộc vào số lượng các mục cần thêm các ký tự thừa từ việc nhập lại tên mảng mỗi lần có thể có nhiều trở ngại hiệu suất hơn hàm 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 hay! – Mattygabe

-1

Khi ai muốn yếu tố được thêm vào với zero-based yếu tố lập chỉ mục, tôi đoán đây sẽ làm việc tốt:

// 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'; 
2

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

$arr1 = $arr1 + $arr2; 

(see source)

+1

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

+1

@SandyBeach không phải là câu trả lời – Albert

7

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

$cart = array(); 
$cart[] = 13; 
$cart[] = "foo"; 
$cart[] = obj; 
Các vấn đề liên quan