0

空の値が問題にならない場合は、変数をチェックしません。

例えば:

$fruits = array("apple","banana");
    foreach ($fruits as $a) {
    $res .= ", $a";
}

echo "This are the fruits you like: ".$res;

さて、$ fruitsがたまたま空の場合、これは問題ではなく、単にリストが空になります(これはあまりエレガントではないことを知っているので、条件文を使用して答えを「果物が好きではありません」に変更できます。 、しかしそれは単なる例です!)。

とにかく配列が空かどうかをチェックする方が一般的に効率的かどうか疑問に思っています。要するに、これはパフォーマンスの観点から優れているのでしょうか、それとも実際の違いはないのでしょうか。

if (!empty($fruits)) foreach()... and so on

ありがとう、よろしく

4

6 に答える 6

7

Any performance gains would be negligible. This is called micro-optimization. Focus on writing good code and stop worrying about micro-optimizations.

I'd go for something like this:

if(!empty($fruit) && is_array($fruit)){
    echo "This are the fruits you like: " . implode(", ", $fruit);
}
于 2012-11-09T16:22:14.510 に答える
1

まあ、それはアレイが何によって移入されているかに依存します。たとえば、ユーザー入力の場合は、空でないことを確認する必要があります。そうでない場合は、不要な場合は空にしないでください。それは間違いなくケースごとです。

また、empty();を使用するときは注意してください。値が0の場合、値が存在していてもtrueを返します。strlen()を使用してこれを回避できます:)

于 2012-11-09T16:21:29.823 に答える
1
echo is_array($array) ? implode(', ', $array) : false;

単線ソリューション..

または、count を使用できます。

例: count($array) > 0 ....

于 2012-11-09T16:30:32.073 に答える
0

$fruits配列が空かどうかを確認しimplode、ウェインが提案したように使用します。

  if(!empty($fruits)){
   echo "This are the fruits you like: " . implode(", ", $fruits);
 }

is_array$fruits = array();これらの行の前のように配列を初期化した場合は、実際には必要ありません。

于 2012-11-09T16:24:55.450 に答える
0

この場合、大きな違いはないと思います。ただし、空の場合、 $res は宣言されず、これによりエラーが発生する可能性があり、エラーは常に悪いものです。

于 2012-11-09T16:25:08.693 に答える
0

You can also use isset() that will check if the variable has a value 0 or otherwise.

于 2012-11-09T16:23:19.513 に答える