PHPで空の配列に要素を追加するにはどうすればよいですか?


488

(サイズを定義していません)などのPHPで配列を定義すると、次のようになります。

$cart = array();

以下を使用して要素を追加するだけですか?

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

PHPの配列には、たとえばaddメソッドがありませんcart.add(13)か?

回答:


802

array_pushあなたが説明した方法と方法の両方が機能します。

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

と同じです:

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

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

178
PHPのドキュメントに記載されているように、毎回1つの要素(ループ内など)または1つの要素を1回だけプッシュする場合$cart[] = 13、同じ操作を実行するための文字数が少ないというだけでなく、このメソッドを使用するのが最善です。また、array_push()が行うような、関数呼び出しのパフォーマンスオーバーヘッドを課しません。編集:しかし、素晴らしい答えです。事実上同じであり、ほとんどの使用はパフォーマンスの違いに気づくことさえありませんが、それらのニュアンスを知るのに役立ちます。
Mattygabe、2011年

67
それは私だけですか、$cart[]=...構文は一見、暗黙のarray_pushではなく変数割り当てのように見えますか?
ブラッドハイン14

6
それは間違いなく私には役立ちます。なぜそれ課題ではないのか、説明は気にしない
limeandcoconut 2014年

4
$ cart [] = 13; より速いです。文字数が少なく、見栄えが良い。
Gal Bracha 14

19
他の言語のプログラマーがcart [] = ...の構文を読むのは非常に混乱するという私の別の見方を提供します。私は多くの言語の経験があり、それが何をするのかは決してわかりません。
Erti-Chris Eelmaa

75

使用せずarray_push、提案したものを使用することをお勧めします。関数はオーバーヘッドを追加するだけです。

//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
「ループで複数の値を配列に追加する場合は、繰り返し[] =ステートメントよりもarray_pushを使用する方が速い」php.net/manual/en/function.array-push.php#84959
Ollie Glass

3
ユースケースが1つまたは複数のアイテムを一度に追加する場合は、間違いなく正しいです。すべての値が同時にわかっている場合は、追加する必要がある項目の数に応じてarray_push表記を使用するのが最善の方法です。毎回配列名を再入力することにより、関数呼び出しよりもパフォーマンスが低下する可能性があります。オーバーヘッド。いつものように、選択するときは判断力を行使する必要があります。良い答え!
Mattygabe、2011年

2
この答えが最も完全です。
ロキアレ2018年

10

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

次のようにすることもできます。

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

10

私の経験に基づくと、キーが重要ではない場合、あなたの解決策は素晴らしいです(最高です):

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

2

覚えておいてください、このメソッドは最初の配列を上書きするので、確信があるときだけ使用してください!

$arr1 = $arr1 + $arr2;

ソースを参照


1
なぜ反対投票ですか、なぜこれが悪いのか誰かが説明できますか?それは安全ですか?
Sandy

4
@SandyBeachそれは答えではありません
mateos 2017年

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

$ cart [] = $ i; -コードのその部分は、要素を配列に追加します----> $ cart = [$ i]; -これはコンパイラに合格しますが
unpluggeDloop '28

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

ゼロベースの要素のインデックス付けで要素を追加したい場合、これもうまくいくと思います:

// 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';
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.