PHP If语句在For循环中

时间:2012-10-03 09:34:18

标签: php loops

由于IF,以下代码会出现语法错误。如何在不删除IF语句的情况下解决此问题?

<?php
    for ($i = 1; $i < 6; $i++){ 
        $data .= 'h'.$i.'{'.    
            if ( !empty ($size) ) {.
            'font-size: ' .$size. ';'.
            }.
        '}';
    }
?>

错误:

Parse error: syntax error, unexpected 'if' (T_IF)

7 个答案:

答案 0 :(得分:3)

您不能在表达式中使用if语句,因为它在语法上是错误的,并且语句本身不返回值。使用可以嵌套在那里的三元?:运算符:

$data .= 'h' . $i . '{' . (!empty($size) ? "font-size: $size" : '') . '}';

您还可以使用双引号来插入变量,而不是让.运算符变得混乱。

答案 1 :(得分:1)

for ($i = 1; $i < 6; $i++) {
    $data .= "h$i{" . (!empty($size) ? "font-size: $size;" : "") . "}";
}

答案 2 :(得分:1)

您不能在字符串连接中使用if,但可以使用短代码:

for ($i = 1; $i < 6; $i++){ 
        $data .= 'h'.$i.'{'.(!empty($size) ? ('font-size: ' .$size. ';') : '').'}';
}

答案 3 :(得分:1)

for ($i = 1; $i < 6; $i++){ 
    $data .= 'h'.$i.'{'.((!empty ($size))?'font-size: {$size}':'').'}';
}

说明:

以下构造称为“ternary if”:

$x = ($test == "Y")?"Yes!":"No!";

与以下内容相同:

if ($test == "Y"){
  $x="Yes!";
} else {
  $x="No!";
}

答案 4 :(得分:1)

如果在线,你不能将字符串全部串起来,所以下列任何一个都应该解决这个问题:

for ($i = 1; $i < 6; $i++)
{//ternary
    $data .= 'h'.$i.'{'.( !empty ($size) ? 'font-size: ' .$size. ';' : '').'}';
}

与写作相同:

for ($i = 1; $i < 6; $i++)
{
    $data .= 'h'.$i.'{';
    if (!empty ($size))
    {
        $data .= 'font-size: ' .$size. ';';
    }
    $data .= '}';
}

好吧,为了100%准确,如果''为空,则三元运算符会结束$size。三元语法如下:[evaluate statement] ? [if true] : [else]。所以真正完整的代码是:

for ($i = 1; $i < 6; $i++)
{
    $data .= 'h'.$i.'{';
    if (!empty ($size))
    {
        $data .= 'font-size: ' .$size. ';';
    }
    else
    {
        $data .= '';
    }
    $data .= '}';
}

答案 5 :(得分:1)

我认为应该没有错误:

<?php
    for ($i = 1; $i < 6; $i++){ 
        $data .= 'h'.$i.'{' ;
            if ( !empty ($size) ) {
           $data .= 'font-size: ' .$size. ';';
            }
        $data .='}';
    }


?>

答案 6 :(得分:1)

您正在向以$data开头的行中的字符串添加内容。

两种解决方案:

1)停止添加内容,启动if,在内部添加更多内容,停止if,然后在新语句中添加其余内容。

$data .= 'h'.$i.'{';

if ( !empty ($size) ) {.
    $data .= 'font-size: ' .$size. ';'.
}.

$data .= '}';
  1. 使用三元运算符。
  2. $data .= 'h'.$i.'{' (!empty($size) ? 'font-size: ' .$size. ';' : ''). '}';

    三元运算符将第一个参数计算为true或false,并返回第二个或第三个参数,就像函数调用一样。

    注意:过多使用三元运算符会使代码无法读取,尤其是在彼此内部使用时。您始终可以使用上面分离的IF结构替换它,以提高可读性。此外,除了返回两个值中的一个之外,三元运算符不能轻易扩展以执行更多操作。