代码之家  ›  专栏  ›  技术社区  ›  Sasha

PHP7.1-迭代器不能通过引用与foreach一起使用

  •  0
  • Sasha  · 技术社区  · 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;
            }
    

    我在这里做错什么了?

    0 回复  |  直到 7 年前
        1
  •  1
  •   Artem Ilchenko    7 年前

    如果要重写数组或对象中的项,请使用 $value[$key] = 建造而不是通过引用访问。 所以循环代码看起来像:

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