ですから、これには問題がありますが、私はそれを知らないのです。ドキュメントを2回読んだ後でも(PHP比較演算子)
isset($items['blog']) ? unset($items['blog']) : NULL;
解析エラー:構文エラー、予期しないT_UNSET
ですから、これには問題がありますが、私はそれを知らないのです。ドキュメントを2回読んだ後でも(PHP比較演算子)
isset($items['blog']) ? unset($items['blog']) : NULL;
解析エラー:構文エラー、予期しないT_UNSET
三項演算は操作可能な式ではないため、三項演算内でunsetを使用することはできません。isset
これは(とのような)言語構造でecho
あり、そこに配置することはできません。
それを使用するだけで大丈夫です。決定は必要ありません。
unset($items['blog']);
エラーは、それT_UNSET
(つまり、 のドキュメントのトークンunset
) がその行で予期されていないことを示しています。つまり、そこに配置することはできません。それで全部です。それを削除すれば問題ありません:
unset($items['blog']);
これは三項演算子とはあまり関係がなく、コード例が示すように、とにかくその演算子は必要ありませunset
ん。
三項演算子が大好きな場合は、未設定を評価できます。
isset($items['blog']) ? eval('unset($items[\'blog\'])') : NULL;
しかし、それはあまり単純ではないため、深刻な提案ではありません。
@Bryanは、三項演算子内の言語構造への関数呼び出しはないと指摘しています。ただし、ここには戻り値がまったく含まれていないため、次のようにします。
unset($items['blog']);
事前に値が設定されているかどうかを確認する必要はありません。そうでない場合は、unset
単に何もしません。
ベンチマークの問題に関する提案です。たとえば、ビュー内で必要な場合、または本当に1行のコードが必要な場合にのみ、三項構文を使用してください。したがって、else 演算子の方がはるかに高速である場合