PHP 7.1 - 迭代器不能通过引用与 foreach 一起使用
PHP 7.1 - An iterator cannot be used with foreach by reference
我有以下方法,当数组中有一个对象时,我会得到这个错误:
迭代器不能通过引用与 foreach 一起使用
public static function sanitizeArray(?array $array, $collation = 'UTF-8')
{
if(!is_array($array))
return $array;
array_walk_recursive($array, function(&$value) use ($collation){
if(is_object($value)){
foreach ($value as &$item) {
$item = self::sanitizeString($item, $collation);
}
}else{
$value = self::sanitizeString($value, $collation);
}
});
return $array;
}
我做错了什么?
如果您想重写数组或对象中的项目,请使用 $value[$key] =
构造而不是通过引用访问。
所以你的循环代码看起来像:
foreach ($value as $key => $item) {
$value[$key] = self::sanitizeString($item, $collation);
}
我有以下方法,当数组中有一个对象时,我会得到这个错误:
迭代器不能通过引用与 foreach 一起使用
public static function sanitizeArray(?array $array, $collation = 'UTF-8')
{
if(!is_array($array))
return $array;
array_walk_recursive($array, function(&$value) use ($collation){
if(is_object($value)){
foreach ($value as &$item) {
$item = self::sanitizeString($item, $collation);
}
}else{
$value = self::sanitizeString($value, $collation);
}
});
return $array;
}
我做错了什么?
如果您想重写数组或对象中的项目,请使用 $value[$key] =
构造而不是通过引用访问。
所以你的循环代码看起来像:
foreach ($value as $key => $item) {
$value[$key] = self::sanitizeString($item, $collation);
}