当使用直接从I';一书中键入的fizzbuzz.php时,我得到一个(T#CONSTANT#ENCAPSED#STRING)解析错误;我在用

当使用直接从I';一书中键入的fizzbuzz.php时,我得到一个(T#CONSTANT#ENCAPSED#STRING)解析错误;我在用,php,generator,fizzbuzz,Php,Generator,Fizzbuzz,我正在尝试从php和MySQL Web Development第5版,第193页进行fizzbuzz.php赋值。我已经完全按照书中的内容键入了它,但是当我运行它时,我得到了一个(T_CONSTANT_ENCAPSED_STRING)解析错误(第9行) 我尝试用echo替换yeild,但在第27行(foreach函数)上出现了一个不正确的函数使用错误。 我已尝试将“with\转义,但这给了我一个语法错误,是意外的字符串。 我尝试使用'instead of',但得到了启用的字符串错误 <?p

我正在尝试从php和MySQL Web Development第5版,第193页进行fizzbuzz.php赋值。我已经完全按照书中的内容键入了它,但是当我运行它时,我得到了一个(T_CONSTANT_ENCAPSED_STRING)解析错误(第9行)

我尝试用echo替换yeild,但在第27行(foreach函数)上出现了一个不正确的函数使用错误。
我已尝试将“with\转义,但这给了我一个语法错误,是意外的字符串。
我尝试使用'instead of',但得到了启用的字符串错误

<?php
function fizzbuzz($start, $end)
{
    $current = $start;
    while ($current <= $end)
    {
        if ($current%3 == 0 && $current%5 == 0)
        {
            yield "fizzbuzz";
        }
        elseif ($current%3 == 0)
        {
            yield "fizz";
        }
        elseif ($current%5 == 0)
        {
            yield "buzz";
        }
        else
        {
            yield $current;
        }
        $current++;
    }
}

foreach(fizzbuzz(1, 20) as $number)
{
    echo $number.'<br />';
}
?>

将yeild更改为echo将返回一个数字字符串和嘶嘶嗡嗡声字符串,但它们的顺序与预期的顺序不同,第27行仍然存在函数错误


我可能打错了什么,但我已经反复检查了一遍,书中就是这样写的。

这太长了,无法发表评论

我怀疑您运行此功能的PHP版本无法支持它,因为您在上面在线测试了代码

它在使用PHP5.0.4时抛出了相同的错误

如果服务器位于本地计算机上,则需要升级服务器。如果它是托管的,您需要联系托管提供商,看看是否有更新版本的PHP可供您使用

编辑:

:

在PHP5中,生成器无法返回值:这样做将导致编译错误。空return语句在生成器中是有效语法,它将终止生成器

编辑#2:

(来自评论)


感谢您的帮助,以及php沙盒的链接,这将在将来对我有所帮助。我运行了phpversion(),它返回了5.4.45。这是一个学校服务器,所以我会问他们是否可以升级,或者在我的笔记本电脑上安装PEAR备份器


使用版本5.4.45也返回相同的错误。此功能仅在PHP 5.5.0及更高版本中可用。

此功能太长,无法发表评论

我怀疑您运行此功能的PHP版本无法支持它,因为您在上面在线测试了代码

它在使用PHP5.0.4时抛出了相同的错误

如果服务器位于本地计算机上,则需要升级服务器。如果它是托管的,您需要联系托管提供商,看看是否有更新版本的PHP可供您使用

编辑:

:

在PHP5中,生成器无法返回值:这样做将导致编译错误。空return语句在生成器中是有效语法,它将终止生成器

编辑#2:

(来自评论)


感谢您的帮助,以及php沙盒的链接,这将在将来对我有所帮助。我运行了phpversion(),它返回了5.4.45。这是一个学校服务器,所以我会问他们是否可以升级,或者在我的笔记本电脑上安装PEAR备份器

使用版本5.4.45也返回相同的错误。此功能仅在php5.5.0及更高版本中可用。

适用于php5

function fizzbuzz($start, $end)
{
    for ($i=$start; $i<=$end; $i++)
    {
        $str = '';
        if ($i % 3 == 0)
            $str = 'Fizz';
        if ($i % 5 == 0)
            $str .= 'Buzz';

        if (empty($str))
            $str = $i;

        echo $str.'<br>';

    }
}

fizzbuzz(1, 20);
函数fizzbuzz($start,$end)
{
对于($i=$start;$i对于php5

function fizzbuzz($start, $end)
{
    for ($i=$start; $i<=$end; $i++)
    {
        $str = '';
        if ($i % 3 == 0)
            $str = 'Fizz';
        if ($i % 5 == 0)
            $str .= 'Buzz';

        if (empty($str))
            $str = $i;

        echo $str.'<br>';

    }
}

fizzbuzz(1, 20);
函数fizzbuzz($start,$end)
{

对于($i=$start;$i,我感谢您的帮助,以及指向php沙盒的链接,这将在将来对我有所帮助。我运行了phpversion(),它返回了5.4.45。这是一个学校服务器,所以我会问他们是否可以升级它,或者在我的笔记本电脑上安装PEAR。@BackupXfer(来自您上面的评论)使用版本5.4.45也返回了相同的错误。此功能仅在PHP 5.5及以上版本中可用。我使用PHP版本7+和fizzbuzz安装了WAMPServer 3作为本地主机服务器。PHP的工作方式与onlinephpfunctions网站上的一样完美。我是一名学生,因此所有这些都是新的和令人困惑的,但我想感谢您的帮助和帮助php沙盒链接。将来遇到问题时,我会使用它来排除版本限制。通过这一个问题,我学到了很多东西,非常感谢您的帮助,谢谢。嘿,这是个好消息,非常欢迎您。我很高兴您能够使用它,并通过设置来完成此任务,马上:)Chearsa附带说明,还有一个很好的网站可以跨多个版本测试PHP代码:感谢您的帮助,以及指向PHP沙盒的链接,这将在将来对我有所帮助。我运行了phpversion(),它返回了5.4.45。这是一个学校服务器,所以我会问他们是否可以升级它,或者在我的笔记本电脑上安装PEAR。@BackupXfer(来自您的上述评论)使用版本5.4.45也返回了相同的错误。此功能仅在PHP 5.5及以上版本中可用。我使用PHP版本7+和fizzbuzz安装了WAMPServer 3作为本地主机服务器。PHP的工作方式与onlinephpfunctions网站上的一样完美。我是一名学生,因此所有这些都是新的和令人困惑的,但我想感谢您的帮助和帮助php沙盒链接。将来遇到问题时,我会使用它来排除版本限制。通过这一个问题,我学到了很多东西,非常感谢您的帮助,谢谢。嘿,这是个好消息,非常欢迎您。我很高兴您能够使用它,并通过设置来完成此任务,马上:)Cheesa补充说明,还有一个很好的网站可以跨多个版本测试PHP代码:如果您仍在使用PHP 5,我强烈建议尽快升级。此版本不再受支持。如果您仍在使用PHP 5,我强烈建议尽快升级。此版本不再受支持。