3

ですから、これには問題がありますが、私はそれを知らないのです。ドキュメントを2回読んだ後でも(PHP比較演算子

isset($items['blog']) ? unset($items['blog']) : NULL;

解析エラー:構文エラー、予期しないT_UNSET

4

4 に答える 4

5

三項演算は操作可能な式ではないため、三項演算内でunsetを使用することはできません。issetこれは(とのような)言語構造でechoあり、そこに配置することはできません。

それを使用するだけで大​​丈夫です。決定は必要ありません。

unset($items['blog']);
于 2012-05-07T01:15:35.620 に答える
2

エラーは、それT_UNSET(つまり、 のドキュメントトークンunset) がその行で予期されていないことを示しています。つまり、そこに配置することはできません。それで全部です。それを削除すれば問題ありません:

unset($items['blog']);

これは三項演算子とはあまり関係がなく、コード例が示すように、とにかくその演算子は必要ありませunsetん。

三項演算子が大好きな場合は、未設定を評価できます。

isset($items['blog']) ? eval('unset($items[\'blog\'])') : NULL;

しかし、それはあまり単純ではないため、深刻な提案ではありません。

于 2012-05-07T01:41:53.007 に答える
1

@Bryanは、三項演算子内の言語構造への関数呼び出しはないと指摘しています。ただし、ここには戻り値がまったく含まれていないため、次のようにします。

unset($items['blog']);

事前に値が設定されているかどうかを確認する必要はありません。そうでない場合は、unset単に何もしません。

于 2012-05-07T01:19:58.207 に答える
0

ベンチマークの問題に関する提案です。たとえば、ビュー内で必要な場合、または本当に1行のコードが必要な場合にのみ、三項構文を使用してください。したがって、else 演算子の方がはるかに高速である場合

于 2012-05-07T02:20:14.730 に答える