-1

次のようなコードを頻繁に設定しています。

if ($arr) {
    foreach ($arr as $a) {
        // Code stuffs
    }
}

if$arrが存在しなくても、まったく問題にならないので@、if ステートメントでコードをめちゃくちゃにするよりも、みんなのお気に入りのサプレッサー ( ) を使用したくなります。

  • check と foreach が同じ行にある場合、それを行うための何らかの省略表現はありますか?
  • このコンテキストでエラーを抑制することに関する大きな問題はありますか?
4

4 に答える 4

6

学生時代の C++ と Java の形成から派生した別のアプローチをお勧めします。

確信が持てない場合は、変数を初期化する方が安価であれば、変数を初期化してください。

たとえば、あなたの場合、私は次のようにします

//early on, *before any other possible use of $arr*!
$arr = array();
//do something else, remake $arr or not, whatever!
foreach ($arr as $a) {
    // Code stuffs
}

正確で、シンプルで、読みやすく、一目で理解できます。以前に $arr を初期化していないと、どこで生まれたのか不思議に思うかもしれません...特に、このプロジェクトを閉じてから 6 か月後にデバッグが必要です!

于 2013-09-03T14:30:01.493 に答える
0

使用する:

if ((!isset($arr)) || (!is_array($arr)) $arr = array();

foreach ($arr as $a) 
{
        // Code stuffs
}

私は知ってifいます、それはまだそこにありますが、あなたはその中にループ全体を持っていません

于 2013-09-03T14:27:22.737 に答える
-1

次のように書くことができます。

foreach((array)$arr as $a) {
    // ...
}

未定義の変数を配列にキャストすると、空の配列が生成されます。$arr 値がブール型、つまり false の場合、これは機能しません。

于 2013-09-03T14:28:09.457 に答える