Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
For循环中的PHP If语句_Php_Loops - Fatal编程技术网

For循环中的PHP If语句

For循环中的PHP If语句,php,loops,Php,Loops,由于IF,以下代码给出了语法错误。如何在不删除IF语句的情况下修复此问题 <?php for ($i = 1; $i < 6; $i++){ $data .= 'h'.$i.'{'. if ( !empty ($size) ) {. 'font-size: ' .$size. ';'. }. '}'; } ?> ($i=1;$i $$数据/代码>开

由于
IF
,以下代码给出了语法错误。如何在不删除IF语句的情况下修复此问题

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

如果在字符串连接中使用
,则不能使用
,但可以使用短码:

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

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

$data .= 'h' . $i . '{' . (!empty($size) ? "font-size: $size" : '') . '}';
使用双引号插入变量,而不是使用
操作符弄乱变量,也会使您受益匪浅

for ($i = 1; $i < 6; $i++){ 
    $data .= 'h'.$i.'{'.((!empty ($size))?'font-size: {$size}':'').'}';
}
与以下内容相同:

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

如果是串联的,则不能串入完整的if,因此以下任一项都应解决此问题:

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

我认为应该没有错误:

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


?>


< /代码> 您正处于从“代码> $$数据/代码>开始的行中添加字符串的情况。

两种解决方案:

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

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

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

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

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


    注意:过多地使用三元运算符会使代码不可读,尤其是在彼此内部使用时。为了更好的可读性,您可以始终使用类似于上面的单独IF构造来替换它。另外,三元运算符除了返回两个值中的一个外,无法轻松扩展以执行更多操作。

    }
    应该在if语句之外您的
    else
    语句没有任何意义。我添加了这一点以澄清三元运算符:
    ?[如果为true]:[else]
    ,当完整编写时,您不会包含else,但
    ?:
    始终需要右侧(else)语句,因此完整转录三元结构会让您看到一条毫无意义的
    else
    语句,是的,但它是there@Yaroslav:我修正了打字错误。谢谢现在它真的起作用了。我会在我的回答中评论。
    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 .= '}';
    }
    
    for ($i = 1; $i < 6; $i++)
    {
        $data .= 'h'.$i.'{';
        if (!empty ($size))
        {
            $data .= 'font-size: ' .$size. ';';
        }
        else
        {
            $data .= '';
        }
        $data .= '}';
    }
    
    <?php
        for ($i = 1; $i < 6; $i++){ 
            $data .= 'h'.$i.'{' ;
                if ( !empty ($size) ) {
               $data .= 'font-size: ' .$size. ';';
                }
            $data .='}';
        }
    
    
    ?>
    
    $data .= 'h'.$i.'{';
    
    if ( !empty ($size) ) {.
        $data .= 'font-size: ' .$size. ';'.
    }.
    
    $data .= '}';