2012-01-18 8 views
3

if文を作りたい。配列$list[0]$list[1]および$list[2]が空でない場合は、これらを使用できるだけの十分な容量があります。PHPで空の3回使用しない方法はありますか?

if(!empty($list[0]) AND !empty($list[1]) AND !empty($list[2])){ 
// do something 
}else{ 
// output error and redirect 
} 

文の場合は、上記を短縮する他の方法はありますか?それとも十分ですか?

+1

代わりに 'count($ list)> = 3'を使うことができます。 – Gumbo

+0

リストに3つの項目だけがあり、リスト内のすべての項目をテストしています。最初の3つのアイテムをテストしているだけで、さらに多くのアイテムが存在する可能性がありますか? – vcsjones

+0

'' ''だけでなく、設定されていない値もチェックしていますか? – Dogbert

答えて

0

でも可能ですが、$list[0]が空の場合、他の2つも空ですか?例えばfgetcsvを使用してインポートする場合、これが該当します。そうすれば、1つの条件が適合します。もしそうでなければ、私はあなたが正しいことをしていると言います。

AFAIk条件内でNULLがFALSEとして処理されるため、空を削除できます。

6

簡単にしてください。おそらくもっとスマートな方法でそれを行うことができますが、実際にはコードの読みやすさが低下するだけです。

+1

私が書いたように大丈夫ですか? – shin

+0

はい、私はそれを意味します。 – Mchl

2

一般的なケース(任意の長さの配列)を扱うことを心配している場合は、順番に要素をチェックするforeach()がより良い方法かもしれません。

あなたが常に3つの要素を期待する特定のケースを扱っているなら、あなたがやっていることは問題ありません。

if(empty($list[0]) OR empty($list[1]) OR empty($list[2])){ 
// output error and redirect 
EXIT; 
} 

// do something 
0

これは単純なコードです。 もっとスマートな答えを出す$ listの情報が必要です。

0

値がゼロのとき、空もfalseを返すことに注意:

-1

あなたが書いたコードは完全に罰金ですが、あなたは、代替を探しているなら..あなたのようなものを行うことができます:それはあなたのために働くなら、私に教えてください

$none_empty = true; 

foreach($list as $array) { 
    if(empty($array)) { 
    $none_empty = false; 
    break; 
    } 
} 

if($none_empty) { 
// do something 
}else{ 
// output error and redirect 
} 

を;)

+0

なぜ私は-1を得ましたか?これは、OPがうっかりしたものではありませんか? :( – Deleteman

+0

いいえ、そうではありません。 –

0

isset(...)は複数のパラメータを扱うことができます。
ISSET()と)(空はあなたのケースでは交換可能であればあなたが書くことができます(http://docs.php.net/manual/en/types.comparisons.php対「変数が設定され、NULLではありませんかどうかを確認する」)

if (isset($list[0], $list[1], $list[2])) { 
    ... 
0

あなたがフィルタリングしたいことがありますあなたはおそらくあなたが十分な値

if (count($list) > 2) 
を持っているかどうかを確認後、とにかく

$list = array_filter($list); 

を、それらを必要としませんように、アレイまず、空の値を取り除くために0

関連する問題