2

これを行うためのよりエレガントな方法があるかどうか疑問に思っています:

$foo = (isset($bar) and array_key_exists('meh', $bar)) ? $bar['meh'] : '';

issetパーツを削除すると$bar、配列でない場合はPHPが警告を発行し、パーツを削除すると、キーが配列内にないarray_key_exists場合はPHPが警告を発行します。meh同じ目的を達成するための、より優雅で警告のない方法はありますか?

4

2 に答える 2

2

キーを直接参照できます。$ barが未定義の場合、内部issetでは例外もスローされません。

$foo = isset($bar['meh']) ? $bar['meh'] : '';

array_key_existsissetの違いは、キーが値に対応している場合にisset返されることです。したがって、上記のコードでは、値によって、ではなく空の文字列が開始されます。それが問題である場合は、現在のアプローチが最適です。FALSENULLNULL$fooNULL

于 2012-06-26T14:21:09.807 に答える
2

言及した警告からコードを「保護」するために必要な手順を正確に実行します。

ただし、警告には理由があります。通常、アクセスしようとしている変数が初期化されない状況を防ぐことができるかどうかを確認する方が理にかなっています。

于 2012-06-26T14:21:19.467 に答える