基准值发电机无法正常工作

4

给定以下代码

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编码字符串。
1个回答

2

你需要确保通过引用传递"一路走到底"

public static function &generate(&$arr)
{
    foreach ($arr as $key => &$value) {
        yield $key => $value;
    }
}

针对$arr$value两者均适用


1
生成器和按引用传递参数有些古怪,一般不建议使用。 - Mark Baker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接