ホームページ >バックエンド開発 >PHPチュートリアル >PHPのnull合体演算子の詳しい説明
null 合体演算子を使用すると、パラメーターを簡単に取得して、それが空の場合にデフォルト値を提供できます。たとえば、js では || を使用して次のことを行うことができます:
function setSomething(a){ a = a || 'some-default-value'; // ... }
しかし、PHP では、残念ながら PHP の || は常に true または false を返すため、このように行うことはできません。
PHP7 は次の演算子を正式に追加しました:
// 获取user参数的值(如果为空,则用'nobody') $username = $_GET['user'] ?? 'nobody'; // 等价于: $username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
PHP7 を実稼働環境で使用するには長い時間がかかると推定されています。では、現在の PHP5 に代替手段はありますか?
調査によると、非常に便利な代替手段があります:
// 获取user参数的值(如果为空,则用'nobody') $username = @$_GET['user'] ?: 'nobody'; // 等价于: $username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
-- このコードを実行してください: https://3v4l.org/aDUW8
目を大きくして見てください、前の PHP7 の例と似ています。 , 重要なのは、?? を ?: に置き換えることです。 これはなに?実際、これは (expr1) ? (expr2) : (expr3) 式の省略パターンです。
Expression (expr1) ? (expr2) : (expr3) expr1 が TRUE と評価される場合、値は expr2 になります。 TRUE と評価される場合、値は expr2 です。FALSE の場合の値は expr3 です。
PHP 5.3 以降、三項演算子の中間部分を省略できるようになりました。式 expr1 ?: expr3 は、expr1 が TRUE と評価される場合は expr1 を返し、それ以外の場合は expr3 を返します。
-- http://php.net/manual/zh/ language.operators.comparison.php
もちろん、この代替案は完璧ではありません - $_GET に 'user' が存在しない場合、注意: 未定義のインデックス: ユーザー エラーのため、@ を使用してこのエラーを抑制するか、E_NOTICE エラーをオフにする必要があります。
追記:PHP7のnull合体演算子 isset()に別れを告げる
以前の書き方
$info = isset($_GET['email']) ? $_GET['email'] : ‘noemail';
今はこうやって書くだけです
$info = $_GET['email'] ?? noemail;
このように連結して書くこともできます
りー
上記では、PHP の null 合体演算子について、関連する側面も含めて詳細に説明しました。PHP チュートリアルに興味のある友人に役立つことを願っています。