首頁  >  文章  >  後端開發  >  PHP文件中三元運算子注意事項沒理解

PHP文件中三元運算子注意事項沒理解

WBOY
WBOY原創
2016-10-11 14:23:371116瀏覽

Note: 注意三元運算子是個語句,因此其求值不是變量,而是語句的結果。如果想透過引用回傳一個變數這點就很重要。在一個透過引用傳回的函數中語句 return $var == 42 ? $a : $b; 將不起作用,以後的 PHP 版本會為此發出警告。

return $var == 42 ? $a : $b; 不起作用是什麼意思? 是無法傳回值還是什麼?

<code class="php">function test($var){
  return $var == 42 ? 1 : 2;
}

echo test(40);    //2</code>

這樣測試時可以回傳的...

回覆內容:

Note: 注意三元運算子是個語句,因此其求值不是變量,而是語句的結果。如果想透過引用回傳一個變數這點就很重要。在一個透過引用傳回的函數中語句 return $var == 42 ? $a : $b; 將不起作用,以後的 PHP 版本會為此發出警告。

return $var == 42 ? $a : $b; 不起作用是什麼意思? 是無法傳回值還是什麼?

<code class="php">function test($var){
  return $var == 42 ? 1 : 2;
}

echo test(40);    //2</code>

這樣測試時可以回傳的...

影響的是"透過引用回傳一個變數"的場景

見例, get2無法達到預期效果

https://3v4l.org/2Q9ai

<code class="php"><?php

$data = new stdClass;
$data->a = 13;
$data->b = 42;

$var = &get1($data, true);
$var = 14;
var_dump($data);

$var2 = &get2($data, false);
$var2 = 43;
var_dump($data);

function &get1($data, $isA) {
    if($isA) {
        return $data->a;
    } else {
        return $data->b;
    }
}

function &get2($data, $isA) {
    return $isA ? $data->a : $data->b;
}</code>
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn