【问题标题】:PHP 7.1 - An iterator cannot be used with foreach by referencePHP 7.1 - 迭代器不能通过引用与 foreach 一起使用
【发布时间】:2019-03-01 08:09:01
【问题描述】:

我有以下方法,当数组中有对象时,我会得到这个错误:

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

我在这里做错了什么?

【问题讨论】:

  • 如果你想重写项目使用foreach ($value as $key => $item)然后$value[$key] = ...
  • 工作:)。谢谢你:)
  • @ArtemIlchenko 将此设置为答案:-)

标签: php php-7


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2015-06-30
    • 2010-12-05
    • 2012-10-07
    • 1970-01-01
    • 2017-04-15
    • 1970-01-01
    • 1970-01-01
    • 2021-05-09
    相关资源
    最近更新 更多