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>