PHPで(空の)配列を初期化する最良の方法 質問する

PHPで(空の)配列を初期化する最良の方法 質問する

他の特定の言語 (たとえば AS3) では、オブジェクトの作成とインスタンス化の理由でvar foo = []はなく、このようにして新しい配列を初期化すると、より高速になることが指摘されていますvar foo = new Array()。PHP に同等のものが存在するかどうか疑問に思います。

class Foo {
    private $arr = array(); // is there another / better way?
}

ベストアンサー1

$myArray = []; 

空の配列を作成します。

次のように、後で配列に値をプッシュできます。

$myArray[] = "tree";
$myArray[] = "house";
$myArray[] = "dog";

この時点で、$myArray には「tree」、「house」、「dog」が含まれています。上記の各コマンドは、配列に追加され、既存の項目が保持されます。

他の言語から来た私にとって、配列に追加するこの方法は奇妙に思えました。 $myArray += "dog" のような操作をしなければならないか、Visual Basic コレクションにあるような "add()" メソッドを使う必要があると思っていました。しかし、この直接追加構文は確かに短くて便利です。

実際にアイテムを削除するには、 unset() 関数を使用する必要があります。

unset($myArray[1]); 

... 配列から「house」を削除します (配列はゼロベースです)。

unset($myArray); 

...配列全体が破壊されます。

明確に言うと、配列に追加するための空の角括弧構文は、ユーザーがインデックスを割り当てるのではなく、各値にインデックスを自動的に割り当てるように PHP に指示する方法にすぎません。PHP は実際には次のように動作します。

$myArray[0] = "tree";
$myArray[1] = "house";
$myArray[2] = "dog";

必要に応じて自分でインデックスを割り当てることができ、任意の番号を使用できます。一部の項目にインデックス番号を割り当て、他の項目には割り当てないこともできます。その場合、PHP は割り当てられた最大のインデックス番号から順に増分して、不足しているインデックス番号を埋めていきます。

したがって、次のようにします。

$myArray[10] = "tree";
$myArray[20] = "house";
$myArray[] = "dog";

... アイテム「dog」には 21 というインデックス番号が与えられます。PHP は増分インデックス割り当てのためのインテリジェントなパターン マッチングを行わないため、「dog」に 30 というインデックスを割り当てたい場合があることを認識できません。配列の増分パターンを指定するには、他の関数を使用できます。ここでは詳しく説明しませんが、PHP ドキュメントにすべて記載されています。

おすすめ記事