2016-12-11 5 views
1

クラスの最上部にある変数を宣言するとき、私がしなければ、それは問題ではない:配列変数は常に配列として宣言する必要がありますか?

private $garbage_values; 

の代わり:もちろん

private $garbage_values = []; 

を、参照するクラス内foreachのループが存在します配列が空である可能性があります。これは問題ですか?

+0

私が知っている限り、実際にはそうではありません。 PHPはかなり柔軟です。しかし、最初に配列として宣言しないと、配列をforeachで実行する前に必ず配列をチェックする必要があります。 –

+0

ああ - それは私が意味するものです。空のときに 'foreach'を実行しようとすると、' private $ value'はエラーを生成しますか? – daninthemix

+0

はい。したがって、それを空の配列にして、チェックする必要はありません。または、foreachを実行する前に小切手を追加してください。とにかく、スクリプトを実行したくない場合、phpfiddleでこれらの小さなものを簡単にテストできます。 –

答えて

2

基本的には、任意のタイプの変数をforeachのように動作させたい場合は、iterable疑似型にする必要があります。

foreachiterable疑似型に該当しない変数を使用すると、エラーが発生します。

private $foo;このような場合は、基本的にnullという値が含まれており、iterableには含まれないため、失敗します。

あなたがprivate $foo = [];を使用している場合、それは確かにiterable疑似型に分類されない空の配列を含み、かつforeachで完璧に使用することができ、一方。

関連する問題