PHP'de boş bir diziye elemanlar nasıl eklenir?


488

PHP (örneğin boyutunu tanımlamıyorum) gibi bir dizi tanımlarsanız:

$cart = array();

Aşağıdakileri kullanarak öğeye basitçe eleman ekleyebilir miyim?

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

PHP'deki dizilerin bir ekleme yöntemi yok cart.add(13)mu?

Yanıtlar:


802

Hem de array_pushtarif ettiğiniz yöntem işe yarayacaktır.

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

Aynıdır:

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

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

178
PHP belgelerinde belirtildiği gibi, her seferinde tek bir öğeyi (döngüdeki gibi) veya tek bir öğeyi bir kez itiyorsanız, $cart[] = 13yöntemi aynı işlemi yapmak için daha az karakter olduğu için kullanmak en iyisidir. Ayrıca array_push () işlevinin getireceği bir işlev çağrısının performans yükünü dayatmaz. Düzenleme: Ama, harika bir cevap. Etkili olarak aynıdır ve kullanımların çoğu performans farkını bile fark etmez, ancak bu nüansları bilmeye yardımcı olur.
Mattygabe

67
Sadece ben mi yoksa $cart[]=...sözdizimi ilk bakışta örtük bir array_push değil değişken bir atama gibi mi görünüyor?
Brad Hein

6
Kesinlikle bana öyle geliyor. Neden bir ödev olmadığını açıklamak sakıncası olmaz .
limeandcoconut

4
$ sepeti [] = 13; daha hızlı. daha az karaktere sahip ve daha iyi görünüyor.
Gal Bracha

19
Alternatif bakış açımı sunacağım, diğer dil programcılarının cart [] = ... sözdizimini okumasının ÇOK kafa karıştırıcı olduğunu söyleyeceğim.
Erti-Chris Eelmaa

75

Önerdiklerinizi kullanmamak array_pushve kullanmak daha iyidir . Fonksiyonlar sadece ek yük ekler.

//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
"Bir döngüdeki bir diziye birden çok değer ekliyorsanız, dizi_push'u
Ollie Glass

3
Kullanım durumunuz tek seferde tek bir öğe veya öğe ekliyorsa kesinlikle düzeltin. Tüm değerler aynı anda biliniyorsa, her seferinde kaç öğe eklenmesi gerektiğine bağlı olarak array_push gösterimini kullanmak en iyisidir. aşırı kafası. Her zaman olduğu gibi, seçim yaparken karar verilmelidir. İyi cevaplar!
Mattygabe

2
Bu cevap en eksiksizdir.
Lokiare

10

Array_push kullanabilirsiniz . Öğeleri, yığındaki gibi dizinin sonuna ekler.

Bunu şu şekilde de yapabilirsiniz:

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

10

Deneyimlerime dayanarak, anahtarlar önemli olmadığında çözüm iyi (en iyi):

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

2

UNUTMAYIN, bu yöntem ilk dizinin üzerine yazar, bu yüzden yalnızca emin olduğunuzda kullanın!

$arr1 = $arr1 + $arr2;

( kaynağa bakın )


1
Neden aşağı oy, birisi bunun neden kötü olduğunu açıklayabilir mi? güvensiz mi?
Sandy

4
@SandyBeach bu bir cevap değil
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>";

$ sepeti [] = $ i; - kodun bu kısmı diziye eleman ekler ----> $ cart = [$ i]; - Bu derleyici geçecek ama ne istediğinizi elde edemezsiniz
unpluggeDloop

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

Biri elemanların sıfır tabanlı eleman indeksleme ile eklenmesini istediğinde, bunun da işe yarayacağını düşünüyorum:

// 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';
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.