PHP 中的三元條件運算子長期以來一直是該語言的主要內容,它允許簡潔的if-then -else 語句。在 PHP 5.3 中,該運算子獲得了新的形式,進一步簡化了其用法。
之前,三元運算子採用以下形式:
<code class="php">expr ? val_if_true : val_if_false</code>
但是,在PHP 5.3 中,中間的表達式可以省略,結果是:
<code class="php">expr ?: val_if_false</code>
這相當於:
<code class="php">expr ? expr : val_if_false</code>
考慮以下範例:
<code class="php">require __DIR__.'/c.php'; if (!is_callable($c = @$_GET['c'] ?: function() { echo 'Woah!'; })) throw new Exception('Error'); $c();</code>
此處,如果條件@$_GET['c'] 計算結果為false,則使用?: 運算子為$c 變數指派預設值。如果 @$_GET['c'] 未設定或無效函數,$c 將被指派顯示「Woah!」的匿名函數。
至於匿名函數,它們確實在 PHP 中存在了一段時間,但它們在 PHP 5.3 中獲得了新的多功能性。匿名函數,也稱為閉包,允許您內聯定義函數而無需為它們命名。
在上面的範例中,匿名函數定義為:
<code class="php">function() { echo 'Woah!'; }</code>
它可以是像任何其他命名函數一樣調用,在本例中使用 $c 變數。
以上是PHP 5.3 中的新增功能:壓縮三元運算子和匿名函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!