ホームページ  >  記事  >  バックエンド開発  >  PHPのnull終了演算子

PHPのnull終了演算子

WBOY
WBOYオリジナル
2016-06-13 12:28:12937ブラウズ

PHP の null マージ演算子

<code class="language-meta">project: blogtarget: null-coalesce-operator-in-php.mddate: 2015-12-30status: publishtags:    - Null Coalesce    - PHPcategories:    - PHP</code>

null マージ演算子を使用すると、パラメーターを簡単に取得し、それが空の場合はデフォルトを提供できます。たとえば、js では、|| を使用して

<code class="language-js">function setSomething(a){    a = a || 'some-default-value';    // ...}</code>

を実行できます。しかし、残念ながら PHP では、PHP の || は常に true または false を返すため、これはできません。このようにしてください。
PHP7 は ?? 演算子を正式に追加しただけです:

<code class="language-php">// 获取user参数的值(如果为空,则用'nobody')$username = $_GET['user'] ?? 'nobody';// 等价于:$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';</code>

PHP7 を運用環境で使用するには時間がかかると推定されています。では、現在の PHP5 には代替手段はあるのでしょうか。
調査によると、非常に便利な代替手段があります:

<code class="language-php">// 获取user参数的值(如果为空,则用'nobody')$username = @$_GET['user'] ?: 'nobody';// 等价于:$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';</code>

-- このコードを実行します: https://3v4l.org/aDUW8

目を開けて見てください、前の PHP7 の例と似ていますが、主に ???: に置き換えます。 これは一体何ですか?実際、これは (expr1) ? (expr2) : (expr3) 式の省略パターンです。

Expression (expr1) ? (expr2) : (expr3) expr1 が TRUE と評価される場合、値は expr2 になり、expr1 が評価される場合、値は expr2 になります。 FALSE が expr3 の場合の値を評価します。
PHP 5.3 以降、三項演算子の中間部分を省略できるようになりました。式 expr1 ?: expr3 は、expr1 が TRUE と評価される場合は expr1 を返し、それ以外の場合は expr3 を返します。
-- http://php.net/manual/zh/ language.operators.comparison.php

もちろん、この代替案は完璧ではありません - $_GET がない場合、 'user' エラーが発生するため、Notice: Undefined index: user を使用してこのエラーを抑制するか、@ エラーをオフにする必要があります。 E_NOTICE

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。