2009-03-24 18 views
337

私は、このような(私はそのサイズを定義していない)とPHPの配列を定義する場合:PHPの空の配列に要素を追加するには?

$cart = array(); 

私は単純に以下のものを使用して、それに要素を追加しますか?

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

は、PHPの配列は、 cart.add(13)例えば、addメソッドを持っていないのですか?

答えて

567

両方array_push、あなたが記載されている方法は動作します。

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

と同じです:それはarray_pushを使用し、ちょうどあなたが示唆したものを使用しない方が良いでしょう

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

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

PHPのドキュメントで述べたように、あなただけなら毎回1つの要素(ループのような)または1つの要素を1回押すだけで、 '$ cart [] = 13'メソッドを使うのが最善です。なぜなら、同じ操作をする文字数が少ないだけでなく、 array_push()は関数呼び出しのパフォーマンスオーバーヘッドを課します。編集:しかし、素晴らしい答え。効果的に同じ、そして大半の用途ではパフォーマンスの違いに気付かず、そのニュアンスを知るのに役立ちます。 – Mattygabe

+38

'$ cart [] = ...'の構文は、一見すると変数の割り当てのように見えますが、暗黙の配列_プッシュではありませんか? –

+3

それは間違いなく私にはあります。私はなぜその** **割り当てではないの説明を気にしません。 – BrassApparatus

6

。 スタックのように、配列の最後に要素を追加します。

また、このようにそれを行っている可能性:

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

。関数は単にオーバーヘッドを追加します。

//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

"ループ内の配列に複数の値を追加する場合は、repeat [] = statementsよりもarray_pushを使う方が速いです" http://www.php.net/manual/en/function.array-push.php# 84959 –

+1

ユースケースが1つまたは複数のアイテムを一度に1つずつ追加しているかどうかは間違いありません。すべての値が同時に分かっている場合は、array_pushの表記法を使うのが一番良いのは、追加する必要がある項目の数を増やすと、関数呼び出しより性能が低下する可能性があるたびに、オーバーヘッド。選ぶときはいつものように、判断が行なわれるべきです。良い答え! – Mattygabe

-1

1の要素はゼロベースの要素のインデックスを追加したい場合は、私はこれは同様に動作します推測:

// 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

は、REMEMBERこの方法は、最初の配列を上書きするので、あなたがしているときにのみ使用します確かに!

$arr1 = $arr1 + $arr2; 

see source

+1

なぜdownvote、誰かがこれが悪い理由を説明することができますか?それは不安ですか? – Sandy

+1

@SandyBeachそれは答えではありません – Albert

7

私の経験に基づいて、キーが重要でない場合、あなた溶液(最高)結構です:

$cart = array(); 
$cart[] = 13; 
$cart[] = "foo"; 
$cart[] = obj; 
関連する問題