2016-09-08 3 views
-5

私はそれが項目が配列にこのようであるかどうかを確認するためにPHPで可能です知っている:配列内に項目があるかどうかを調べるときは、array_key_exists()を使用しないでください。

項目がない場合には、その後、( falseまたは zeroに等しい) null値が代わりに返されているため
if(my_array['item_one']){ # some code here... } 

いつも動作しますか?あなたが知っているので... PHPのように、この方法では常に安全ですか?

+7

phpに厄介なプログラミングを責めることはほとんどありません... – jeroen

+0

これは有効なPHPとNOではありません。存在が存在しないかのように安全でない場合、 'unknown index error'が生成されます – RiggsFolly

+1

' isset($ my_array [もしarray_key_exists()があなたの関数名をlongにするのであれば – RiggsFolly

答えて

4

このイディオムは悪い考えです。まず、コメントに記載されているように、配列内に存在しない値にアクセスしようとすると、不明なインデックスエラーが生成されます。第二に、さらに重要なのは、0FALSEは本当に本当の値ですが、あなたが示唆しているようなスニペットでそのような値を指すキーを評価することは、そこには存在しないかのように振る舞います。

短い話をする - PHPには、配列にキーが含まれているかどうかを確認する優れたツールがあります。array_key_existsそれを使わない理由はありません。

+0

正確にPHPスローにするには: '/アプリケーション/ MAMP/htdocs/exp/mainの未定義インデックス:item_one .php on line 21'だから私はこれを正しく理解すれば、この通知が将来問題を引き起こす可能性があるということですか? – Michal

+0

私は専門家ではありませんが、思考の時間がたってから、多くの理由から、コードが生産時に誤ってコードから抜け出せないことがわかっていることは明らかです。したがって、 'array_key_exists()'はPHPにとって本当に適切な方法です。 'isset()'でも十分です。これは別の議論です。 – Michal

関連する問題