foreach():传递的参数无效

时间:2014-10-29 07:46:48

标签: php

我正在尝试运行以下代码并收到错误“为foreach()提供的无效参数”:

<?php
function xrange($start, $limit, $step = 1) {
    if ($start < $limit) {
        if ($step <= 0) {
            throw new LogicException('Step must be +ve');
        }

        for ($i = $start; $i <= $limit; $i += $step) {
            yield $i;
        }
    } else {
        if ($step >= 0) {
            throw new LogicException('Step must be -ve');
        }

        for ($i = $start; $i >= $limit; $i += $step) {
            yield $i;
        }
    }
}

/*
 * Note that both range() and xrange() result in the same
 * output below.
 */

echo 'Single digit odd numbers from range():  ';
foreach (range(1, 9, 2) as $number) {
    echo "$number ";
}
echo "\n";

echo 'Single digit odd numbers from xrange(): ';
foreach (xrange(1, 9, 2) as $number) {
    echo "$number ";
}
?>

任何人都可以建议我找不到的根本原因是什么?

1 个答案:

答案 0 :(得分:-1)

yield关键字只能在5.5版本的PHP之后使用。或者,您可以将功能修改为:

function xrange($start, $limit, $step = 1) {
    $num = array();
    if ($start < $limit) {
        if ($step <= 0) {
            throw new LogicException('Step must be +ve');
        }

        for ($i = $start; $i <= $limit; $i += $step) {
            $num[]= $i;
        }
    } else {
        if ($step >= 0) {
            throw new LogicException('Step must be -ve');
        }

        for ($i = $start; $i >= $limit; $i += $step) {
            $num[]= $i;
        }
    }
    return $num;
}

这样就可以了。