0

PHP のエラー抑制構文を使用するだけで、特定のキーが存在するかどうかわからない場合に、array_key_exists に代わるより高速で簡単な方法かどうかを知りたいです。

つまり、次の代わりに:

if (array_key_exists($array, $key)) {
    $myval = $array[$key];
    [... do something with $myval ...]
}

単純に使用します:

if ($myval = @$array[$key]) {
    [... do something with $myval ...]
}

これはより効率的であり、言葉も少ないようですが、おそらく、私がまだ見ていない微妙な問題やエッジケースが発生する可能性があります.

このアプローチの潜在的な問題は何ですか?

4

2 に答える 2

2

最大の問題は、配列の値が間違っている可能性があることです。

その場合$array[key] === false、最初のケースは に入りますifが、2 番目のケースは入りません。

于 2012-08-29T05:30:10.987 に答える
2

ところで、 も使用できますisset()

PHP のエラー抑制演算子も大幅に速度を落とし、通常の約半分の速度にします。

そして最後に、最終的にエラーを抑制しているケースに遭遇し、タイプミス$arayが存在しないことを発見します。これは、すべてのエラーをブロックしているため、決して見つけることさえできません。

于 2012-08-29T05:32:54.923 に答える