我有以下方法,当数组中有对象时,我将得到此错误:
迭代器不能通过引用与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] = 建造而不是通过引用访问。 所以循环代码看起来像:
$value[$key] =
foreach ($value as $key => $item) { $value[$key] = self::sanitizeString($item, $collation); }