Elvis 運算子(?:) PHP 揭秘
在複雜的PHP 程式碼庫深處,你可能會遇到一個神秘的運算符: ? : 操作員。被稱為“Elvis 運算子”的它可能會讓您想知道“它的目的是什麼?”
本質上,如果左操作數被認為是“真實的”,則?: 運算符將計算其左操作數,否則右操作數。換句話說:
foo ?: bar
大致相當於三元運算子:
foo ? foo : bar
或在傳統的if -else 語句中:
if (foo) { foo = foo; } else { foo = bar; }
但是,與三元運算子不同,?: 運算子只計算左運算元一次,從而提高了效率。
用法範例
一個常見的用例用於自我檢查,如程式碼片段所示:
$items = $items ?: $this->_handle->result('next', $this->_result, $this);
這裡,它將$this->_handle->result() 的結果賦給 $items if $items 為 null 或 false,否則 $items 保持不變。
附加範例
這裡還有一些範例來說明該行為:
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' var_dump('' ?: 'roll'); // 'roll' var_dump('0' ?: 'roll'); // 'roll' var_dump('42' ?: 'roll'); // '42'
以後如果遇到?: 運算符,請記住它的目標是提供一種基於真實性的簡潔評估和賦值方法,使您的程式碼更有效率和可讀。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3