在 PHP 中,触发“仅变量应通过引用传递”的严格标准警告当尝试通过引用函数或方法传递非变量时。
考虑以下代码:
$el = array_shift($instance->find());
此代码会生成严格标准警告,因为 $instance->find() 返回一个数组,而不是变量。当作为参数传递时,它尝试通过引用传递数组(使用 & 运算符),这会触发警告。
但是,在以下代码中:
function get_arr(){ return array(1, 2); } $el = array_shift(get_arr());
严格的标准不会报告警告,因为 get_arr() 是一个返回数组的函数。因此,它被视为变量而不仅仅是数组值。
严格标准警告特别发生在调用方法或函数且其返回值为通过引用传递。例如,考虑以下代码:
class test { function test_arr(&$a) { var_dump($a); } function get_arr() { return array(1, 2); } } $t = new test; $t->test_arr($t->get_arr());
在此代码中,会生成严格标准警告,因为 $t->get_arr() 返回一个数组,而不是变量。但是,它是使用 & 运算符通过引用 test_arr 方法传递的。
要解决严格标准警告,有两种可能的方法:
function test_arr($a) { var_dump($a); }
$inter = $instance->find(); $el = array_shift($inter);
以上是为什么 PHP 会发出'仅应通过引用传递变量”警告,以及如何解决这些警告?的详细内容。更多信息请关注PHP中文网其他相关文章!