簡體   English   中英

PHP中是否有像三元運算符的短版本的PHP?

[英]Is there a PHP like short version of the ternary operator in Java?

在PHP中,三元運算符有一個簡短的版本。

expr1 ? expr2 : expr3;

改變成

expr1 ? : expr3;

short版本返回expr1的結果為true,expr3的結果為false。 這允許很酷的代碼可以根據自己的當前狀態填充變量。 例如:

$employee = $employee ? : new Employee();

如果$employee == null或由於任何其他原因求值為false,則上面的代碼將創建一個new Employee(); 否則, $employee的值將被重新分配給自己。

我在Java中尋找類似的東西,但我找不到三元運算符的任何類似用例。 所以我想問是否有這樣的功能或類似的東西可以避免三元運算符的一個表達式,以減少重復。

不,那里沒有。 (根據定義 ,三元運算需要三個操作數)

從PHP 5.3開始,可以省略三元運算符的中間部分。 表達式expr1?:expr3如果expr1的計算結果為TRUE則返回expr1,否則返回expr3。

資料來源: PHP手冊

就像Java中的那個,但在Java中,您需要指定兩個結果:

三元if-else運算符使用三個操作數生成一個值,這取決於布爾斷言的真實性或錯誤性。 它的形式如下: -

boolean-exp ? value1 : value2

資料來源:

關於三元條件運算符的Java規范

官方Java文檔

Java.net博客

還要記住,與Java和其他類似操作符的流行語言不同, ?:在PHP中是左聯的。 所以這:

<?php
$arg = "T";
$vehicle = ( ( $arg == 'B' ) ? 'bus' : 
             ( $arg == 'A' ) ? 'airplane' : 
         ( $arg == 'T' ) ? 'train' : 
         ( $arg == 'C' ) ? 'car' : 
         ( $arg == 'H' ) ? 'horse' : 
                               'feet' );
echo $vehicle;

打印horse而不是train (這是你在Java中所期望的)

資料來源:

http://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/#operators

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM