严格的标准错误

时间:2011-07-17 19:27:49

标签: php

函数parse_users返回一个数组。

我在另一个函数中执行以下操作:

return reset($this->parse_users($records));

但我得到Strict Standards: Only variables should be passed by reference in...

是因为我在函数上做reset()吗?

我必须这样做:

$users = $this->parse_users($records);
return reset($users);

或者是别的什么?

4 个答案:

答案 0 :(得分:5)

就是这样。 reset将数组引用作为参数,因此它基本上需要一个实数变量来引用 - 即使它是一个传递引用值。

答案 1 :(得分:3)

你为什么不试试

$users = $this->parse_users($records);
return reset($users);

这是正确的

答案 2 :(得分:3)

单线解决方案使用另外一对支架;这会将引用转换为变量并省略错误:

return reset( ( $this->parse_users($records) ) );

答案 3 :(得分:1)

来自PHP documentation for reset

  

mixed reset(array& $ array)

     

reset()将数组的内部指针倒回第一个元素,并返回第一个数组元素的值。

PHP reset()函数接受数组的引用。 引发严格警告是因为您直接将parse_users的结果传递给reset,而无法在其他函数中访问该数组。

如果您在重置后尝试返回完整数组(而不仅仅是第一个值),则应使用:

$users = $this->parse_users($records);
reset($users);

return $users;

或者,如果您只想要parse_users中的第一个值,则可以使用:

$users = $this->parse_users($records);
return $users[0];

只有在迭代数组并希望确保从头开始时才需要重置功能。<​​/ p>