配列が特定のキーを持っているかどうかをチェックし、そうでない場合はチェックしておくと簡単です。PHP簡略化の場合
$test = array("hi" => "123");
isset($test["hi"]) ? unset($test["hi"]);
なぜ解析エラーが発生するのですか?正しい構文は何ですか。
配列が特定のキーを持っているかどうかをチェックし、そうでない場合はチェックしておくと簡単です。PHP簡略化の場合
$test = array("hi" => "123");
isset($test["hi"]) ? unset($test["hi"]);
なぜ解析エラーが発生するのですか?正しい構文は何ですか。
ternary operatorですので、このコード:
$a = ($condition)? $b : $c;
は同等です:あなたが聞いて何のため
if($condition) $a = $b;
else $a = $c;
、チェックする必要はありません、することができます最初にそれをチェックし、それが与えることなく、単にunset()
配列要素エラーメッセージなし:
unset($test["hi"]);
その言語構造が値を返さないようあなたはternary conditional operatorでunset()
を使用することはできませんし、オペレータは、コードブロックを実行していない、いくつかの値に評価することを期待します。さらに、三元演算子が不完全です(:
コンポーネントがありません)。
とにかくif文はどのように長くなりますか?
if (isset($test["hi"])) unset($test["hi"]);
新しい言語機能を見つけたら、それを使用してください。それが有用であるかどうかは重要ではありません - それを現代的に使用してください;-) – zerkms
三項条件演算子は、次のようになります。
a ? b : c
あなたはc
句、そしてあなたのb
句は値を返す式ではないことを逃しています。この構造体はではなく、であり、if
文の省略形であり、それが設計されたものではなく使用しようとしています。
if (isset($test['hi']))
unset($test['hi']);
もう少し明示的array_key_exists
もあります:
はif
ステートメントを使用します。そのドキュメントをisset
のものと比較して、どちらがあなたのニーズに適しているかを判断してください。
何もテストする必要はありません。設定されていない変数を設定解除しようとすると、何も起こりません。
あなたのコードと等価では次のようになります。
$test = array("hi" => "123");
unset($test["hi"]);
$test["hi"]
が設定されていない場合でも、あなたはそれまだ設定解除することができます...
は警告も通知も出ませんか? –
@ElGabbu私は試しましたが、それはしませんでした! – SteeveDroz
三項演算子**は 'へ**速記ではありませんif' – zerkms
私はなぜあなたが使用したくないのか興味があります。私自身、コードをより簡単に読むことができるので、私はそれらが好きです。あなたのコードを誰かが読んでいると想像してみましょう。容易に理解される>少ない文字。 – Mattis
この例は実際には無意味です。設定を解除する前に、変数/インデックスの有無をチェックする必要はありません。 :) – netcoder