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>