2017-12-18 13 views
1

私は、電子メールメッセージのさまざまな部分を見てクラスを書きました。 1つの機能は、ファイル名がそのプロパティの配列に存在するかどうかをチェックすることによって、各パーツがファイルかどうかを判断することです。PHPクラスの配列誤差

私のチェックは次のようになります。

if (array_key_exists("filename",$body_part->d_parameters)) { 
    // do stuff 
} 

しかし、一部のファイル(ヘッダ、本文など)でない場合には、「ファイル名と呼ばれる全く配列のキーが存在しないので、私は私のログにこのエラーを取得しておきます"

答えて

1

最初のエラーは、参照時に$body_part->d_parametersが存在しないためです。関数にオブジェクトのプロパティを渡すしようとする前にisset()is_array()を使用します。$body_part->d_parametersはあなたがarray_key_exists()

ソリューションに渡す配列ではないので

秒の誤差があります。まさにこれがdownvotedされたのはなぜ

if (isset($body_part->d_parameters) and is_array($body_part->d_parameters) and array_key_exists("filename",$body_part->d_parameters)) { 
    // do stuff 
} 
+1

? – War10ck

+0

1分後にもう少しテキストを追加しましたが、比較的基本的なPHPの質問に答えたので、多分そのテキストを追加しましたか? – Scuzzy

+1

心配しないで、私はあまりにも知らない、私はそれをupvoteします。しかし、あなたがconciser条件文を書くことができempty' '使用:http://sandbox.onlinephpfunctions.com/code/7edb569af95a08d0ed71fcc3e26aa783fbbadf49 – HPM