被调用函数内的Foreach语句会出错

时间:2014-06-20 22:28:35

标签: php function

我插入一个foreach()语句,它可以动态地显示年份值到被调用的函数中,但它会一直给出错误... 这是我正在做的事情的摘录

   $display->content( 'The heading 
                    <select name="Year" id="Year">'. 
                          foreach(range(date("Y",2013) as $value){ 
                               echo "<option value=\"$value\">$value</option>\n";
                           }
                     .'</select> The script ends'
           ); 

这是我执行时遇到的错误Parse error: syntax error, unexpected 'foreach' (T_FOREACH) in /var/www/test.php on line 140 。请任何帮助处理这一点表示赞赏。谢谢。

2 个答案:

答案 0 :(得分:3)

您的代码在语法上无效。以下应该有效。

$options = "";
foreach(range(date("Y",2013)) as $value)
{ 
    $options .= '<option value="'.$value.'">$value</option>';
}
$display->content( 'The heading 
                    <select name="Year" id="Year">'. 
                          $options
                    .'</select> The script ends'
                 );

答案 1 :(得分:1)

PHP中的

foreach是一个语句,即它是程序的一部分,不返回任何值。 PHP编译器通过告诉您在连接运算符foreach之后没有期望.关键字来抱怨这一点,这需要另一个字符串添加到前一个字符串。

您可能希望将循环移出函数调用并将字符串汇总到变量中,如下所示:

// assemble the content first
$c = 'The heading <select name="Year" id="Year">';
foreach (range(date("Y",2013)) as $value) {
    $c .= "<option value=\"$value\">$value</option>\n";
}
$c .= '</select> The script ends';

// then call your function
$display->content($c);

请注意,这是与Scala等函数式语言的主要区别之一,其中几乎所有函数都具有正确的返回类型 - 即使是for或if语句。