给定以下代码
public static function &generate($arr)
{
foreach ($arr as $key => $value) {
yield $key => $value;
}
}
这个静态方法应该在每次数组迭代时通过引用产生$key => $value。
然后我在另一个类中使用了这个静态方法:
$questions = $request->questions;
foreach (self::generate($questions) as &$question) {
$question['label'] = json_encode($question['label']);
... other code
}
unset($question);
die(var_dump($questions[0]['label']));
我本应该得到一个json编码的字符串,但我总是得到一个数组,不明白为什么。
- $request变量中的
questions
属性不存在,它是通过魔术方法__get
返回的(questions
在一个数组中,所以值由__get返回) - 如果我删除generate方法并将
$questions
传递给我的foreach循环,它可以工作,并且我可以得到我的json编码字符串。