配列の省略形:{}や[]のようなリテラル構文はありますか?


84

PHPでの配列表記の省略形は何ですか?

使用しようとしました(機能しません):

$list = {};

PHPの他の速記に関するいくつかの情報へのリンクを提供すれば、それは完璧です。


特別な場合(str_splitなど)に配列を作成するために使用できる関数はたくさんありますが、それはあなたが話していることではないと思います。
マシュー

PHPはそうではありません。しかし、phprebootとpihipiは実験的な新しい構文を提供します。
マリオ

回答:


135

更新:
PHP 5.4.0以降、配列を宣言するための短縮された構文が導入されました。

$list = [];

前の回答:

ありません。のみ$list = array();しかし、あなたはただ要素を追加し始めることができます。

<?php
$list[] = 1;
$list['myKey'] = 2;
$list[42] = 3;

PHPに関する限り、それは完全に問題ありません。未定義の変数のE_NOTICEも取得しません。

E_NOTICEレベルのエラーは、初期化されていない変数を操作する場合に発行されますが、初期化されていない配列に要素を追加する場合は発行されません。

速記法はあちこちに散らばっています。それらを見つけたい場合は、マニュアルを読んでください。

あなたの娯楽のためだけに、いくつかの例:

  1. $arr[]の省略形array_push
  2. foreach構文
  3. echo $string1, $string2, $string3;
  4. 配列の連結 +
  5. の存在 elseif
  6. 文字列への変数の埋め込み、 $name = 'Jack'; echo "Hello $name";

6
PHPはそのように卑劣です。
GWW 2010年

1
私はPHPを何年も専門的に使用してきましたが、その$results[] = $row;意味を同僚に尋ねなければなりませんでした。
Josue Alexander Ibarra 2016年

4
$ results [] = $ row; 実際にはarray_push($ results、$ row)よりもはるかに高速です
Daniklad 2016

やっぱり$var = [];PHP7で導入されたと思いました。5.4までさかのぼるとは思いもしませんでした!
IncredibleHat

46

はい、存在します!!

別のStackOverflowの質問からの抜粋:

配列の短縮された構文が再検討され、受け入れられ、PHP5.4でリリースされる予定です。

使用法:

$list = [];

参照:PHP5.4配列の省略形


この間違いを犯した人=>:、キーと値の間の代わりに使用してください!
clabe 4518

30

[]内のコンテンツを次のように定義することもできます。

  $array = ['vaue1', 'value2', 'key3'=>['value3', 'value4']];

これはphp5.4以降でのみ機能します。


1
5.4以降を書く方が良いと思います(5.6では動作します)。注意として、const x = array(....)が機能しないため、配列をクラス定数として宣言する唯一の機能する方法です(たとえば、const x = ["a"、 "b"];)
Pierpaolo Cira 2016年




3

配列は次のように宣言できます。

$myArray1 = array(num1, num2, num3);
$myArray2 = array('string1', 'string2', 'string3');
$myArray3 = array( 'stringkey1'=>'stringvalue1', 'stringkey2'=>'stringvalue2');
$myArray4 = array( 'stringkey1'=>numValue1, 'stringkey2'=>numValue2);
$myArray5 = array( numkey1=>'stringvalue1', numkey2=>'stringvalue2');
$myArray6 = array( numkey1=>numValue1, numkey2=>numValue2);

必要な数の組み込み配列を持つことができます。


これにより、未定義の定数に関する通知が生成されます。
popnoodles 2014年

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