由于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)
答案 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 .= '}';
$data .= 'h'.$i.'{' (!empty($size) ? 'font-size: ' .$size. ';' : ''). '}';
三元运算符将第一个参数计算为true或false,并返回第二个或第三个参数,就像函数调用一样。
注意:过多使用三元运算符会使代码无法读取,尤其是在彼此内部使用时。您始终可以使用上面分离的IF结构替换它,以提高可读性。此外,除了返回两个值中的一个之外,三元运算符不能轻易扩展以执行更多操作。