[解決済み】PHP の ?: 演算子 (「Elvis 演算子」)
2022-03-28 12:42:15
質問
今日、あるPHPのコードでこんなのを見かけました。
$items = $items ?: $this->_handle->result('next', $this->_result, $this);
を使いこなせません。
?:
演算子が使用されています。三項演算子のように見えますが、述語が真である場合に評価するための式が省略されています。どういうことでしょうか?
どのように解決するのか?
左のオペランドを評価します。 真実性 そうでない場合は右オペランドを返します。
擬似コードでは
foo = bar ?: baz;
はおおよそ次のように解決されます。
foo = bar ? bar : baz;
または
if (bar) {
foo = bar;
} else {
foo = baz;
}
という違いがあります。
bar
は一度だけ評価されます。
の "セルフチェック" を行うために使用することもできます。
foo
投稿されたコード例で示されたように
foo = foo ?: bar;
これは
bar
を
foo
もし
foo
がヌルかニセモノである場合。
foo
を変更しない。
さらにいくつかの例を示します。
<?php
var_dump(5 ?: 0); // 5
var_dump(false ?: 0); // 0
var_dump(null ?: 'foo'); // 'foo'
var_dump(true ?: 123); // true
var_dump('rock' ?: 'roll'); // 'rock'
?>
ちなみに、これは エルビス演算子 .
関連
-
[解決済み】XAMPPエラー: www.example.com:443:0 サーバー証明書に、サーバー名と一致するIDが含まれていません。
-
[解決済み】foreach()に与えられた引数が無効です。)
-
[解決済み] * vchiqインスタンスを開くのに失敗しました。
-
[解決済み] PHPで配列から要素を削除する
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] PHPでHTML/XMLをパースして処理する方法とは?
-
[解決済み] Kotlin 三項条件演算子
-
[解決済み】PHPの'foreach'は実際どのように動作するのですか?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Weird PHP error: 'Can't use function return value in write context'.
-
[解決済み】Fatal error: 未定義の関数 sqlsrv_connect() を呼び出した。
-
[解決済み】空の配列要素を削除する
-
[解決済み】「セッションキャッシュリミッターを送信できません - ヘッダーはすでに送信されています」【重複】。
-
[解決済み] SQLSTATE[HY093]: 無効なパラメータ番号: パラメータが定義されていません
-
[解決済み】既に開始されているPHPセッション【重複あり
-
[解決済み] [Solved] Fatal error: メンバ関数 query() の null への呼び出し。
-
[解決済み] PHP - ストリームを開くのに失敗しました : そのようなファイルまたはディレクトリがありません。
-
[解決済み] Uncaught Error: 未定義の関数 mysql_escape_string() の呼び出し。
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?