Bagaimana cara menambahkan elemen ke array kosong di PHP?

488

Jika saya mendefinisikan array di PHP seperti (Saya tidak menentukan ukurannya):

$cart = array();

Apakah saya cukup menambahkan elemen ke dalamnya menggunakan yang berikut ini?

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

Bukankah array dalam PHP memiliki metode add, misalnya cart.add(13),?

AquinasTub
sumber

Jawaban:

802

Baik array_pushdan metode yang Anda jelaskan akan bekerja.

$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>";

Sama dengan:

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

// Or 
$cart = array();
array_push($cart, 13, 14);
?>
Bart S.
sumber
178
Seperti yang dinyatakan dalam dokumentasi PHP, jika Anda hanya mendorong satu elemen setiap kali (seperti dalam satu lingkaran) atau satu elemen sekali, yang terbaik adalah menggunakan $cart[] = 13metode ini tidak hanya karena lebih sedikit karakter untuk melakukan operasi yang sama, tetapi juga juga tidak memaksakan overhead kinerja dari panggilan fungsi, yang array_push () akan lakukan. Sunting: Tapi, jawaban yang bagus. Secara efektif sama, dan sebagian besar kegunaan bahkan tidak akan melihat perbedaan kinerja, tetapi membantu untuk mengetahui nuansa itu.
Mattygabe
67
Apakah hanya saya atau apakah $cart[]=...sintaksis, pada pandangan pertama, terlihat seperti penugasan variabel dan bukan array_push implisit?
Brad Hein
6
Itu pasti berlaku untuk saya. Saya tidak keberatan penjelasan mengapa ini bukan tugas.
limeandcoconut
4
$ keranjang [] = 13; lebih cepat. memiliki lebih sedikit karakter dan terlihat lebih baik.
Gal Bracha
19
Saya hanya akan menawarkan sudut pandang alternatif saya bahwa SANGAT membingungkan bagi pemrogram bahasa lain untuk membaca sintaks keranjang [] = ..., Saya punya pengalaman dengan banyak bahasa dan saya tidak akan pernah menebaknya.
Erti-Chris Eelmaa
75

Lebih baik tidak menggunakan array_pushdan hanya menggunakan apa yang Anda sarankan. Fungsinya hanya menambahkan overhead.

//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';
OIS
sumber
11
"Jika Anda menambahkan beberapa nilai ke array dalam satu lingkaran, lebih cepat menggunakan array_push daripada mengulangi [] = pernyataan" php.net/manual/en/function.array-push.php#84959
Ollie Glass
3
Benar sepenuhnya jika use-case Anda menambahkan satu item atau item satu per satu. Jika semua nilai diketahui pada saat yang sama, mungkin yang terbaik hanya menggunakan notasi array_push tergantung pada berapa banyak item yang harus ditambahkan karakter tambahan dari pengetikan ulang nama array setiap kali mungkin lebih merupakan penghalang kinerja daripada panggilan fungsi. atas. Seperti biasa, penilaian harus dilakukan ketika memilih. Jawaban yang bagus!
Mattygabe
2
Jawaban ini adalah yang paling lengkap.
Lokiare
10

Anda dapat menggunakan array_push . Itu menambahkan elemen ke akhir array, seperti dalam tumpukan.

Anda juga bisa melakukannya seperti ini:

$cart = array(13, "foo", $obj);
dan saya
sumber
10

Berdasarkan pengalaman saya, solusi Anda baik-baik saja (terbaik) ketika kunci tidak penting:

$cart = [];
$cart[] = 13;
$cart[] = "foo";
$cart[] = obj;
fico7489
sumber
2

INGAT, metode ini menimpa array pertama, jadi gunakan hanya ketika Anda yakin!

$arr1 = $arr1 + $arr2;

( lihat sumber )

T.Todua
sumber
1
Mengapa downvote, bisakah seseorang menjelaskan mengapa ini buruk? apakah ini tidak aman?
Sandy
4
@SandyBeach itu bukan jawaban
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>";
unpluggeDloop
sumber
$ cart [] = $ i; - bagian kode menambahkan elemen ke array ----> $ cart = [$ i]; - ini akan melewati kompiler tetapi Anda tidak akan mendapatkan apa yang Anda inginkan
unpluggeDloop
0
$products_arr["passenger_details"]=array();
array_push($products_arr["passenger_details"],array("Name"=>"Isuru Eshan","E-Mail"=>"[email protected]"));
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>";
}
Isuru Eshan
sumber
-1

Ketika seseorang ingin elemen ditambahkan dengan pengindeksan elemen berbasis nol, saya kira ini akan bekerja juga:

// 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';
Tim Gestix
sumber