2016-09-23 2 views
0

(配列のはず) 私は、次のテストになるだろう:ループする前に変数を(PHPで)チェックする正しい方法ですか?変数をループの前に

if(
     !empty($arrJobs) && 
     is_array($arrJobs) && 
     count($arrJobs) 
){ 
foreach ($arrJobs as $item) { 
    //loop tasks 
} 
} 

を私があれば使用しても、見てきました(はsizeof($ arrJobs)> 0)が、場合$ arrJobsでisa整数(私は入力を信じることができません)それは通過するだろうと私は整数を介してループしようとする...奇妙。

は、配列をループする前にこのテストを実行するために、より簡潔かつ包括的な方法はありますか?

+0

の可能性のある重複した[変数が配列であるかどうかを確認する方法?...または配列-のようなもの](http://stackoverflow.com/questions/15603952/how-to-check-if-variable-is-array -or-something-array-like) – Naruto

答えて

0

あなたはis_array以外のものをチェックする必要はありません:それは空の場合、PHPは、単純にループしません。また

提案:これらifは感覚でした(ないその場合は、この説明のために便利です)(それは読みやすさを向上させるため、コーディングスタイルのように)あなたは「早期終了」に分割する必要がある場合

if (empty($arrJobs)) { 
return; 
} 

if (!is_array($arrJobs)) { 
return; 
} 

if (count($arrJobs)) { 
return; 
} 
+0

配列が空の場合、何かをする必要がある場合(または何かを報告する必要がある場合)、センスがありますか?彼らはいないの?あなたのコードから – koalaok

+0

@koalaokは、彼らは明らかに偽のように最初の条件の評価の後に、それは他のcomparsionsをスキップして – DonCallisto

+1

@DonCallisto PHPは、短絡状態の評価を持っているので、この「早期終了」は無用である、ちょうどより多くのコードは意味を持ちません。 –

1

それは、 FOREACHにARRAYをループしているかどうかを確認することが重要です。そうしないとPHPがエラーを出すでしょう... FOREACHはパラメータがARRAYであることを期待しています..

あなたはIS_ARRAYを使うことができます。

が、非常に良い練習になり、空...私はARRAYが空であるかどうかを確認するためにCOUNT()を使用している場合は、それをチェックします。

+0

興味深い答え – Farkie

関連する問題