PHP 7.1-迭代器不能通过引用与foreach一起使用

时间:2019-03-01 08:09:01

标签: php php-7

我有以下方法,当数组中有一个对象时,会出现此错误:

迭代器不能与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;
        }

我在这里做什么错了?

1 个答案:

答案 0 :(得分:1)

如果要重写数组或对象中的项目,请使用$value[$key] =构造而不是通过引用进行访问。 因此,您的循环代码将如下所示:

foreach ($value as $key => $item) {
    $value[$key] = self::sanitizeString($item, $collation);
}