PHP:在行内添加If条件

时间:2013-06-17 17:48:13

标签: php operators if-statement

    if($i==6) {
    $result .= '<a style="display:none" class="fancybox" data-fancybox-group="gallery" href="'.$value['images']['standard_resolution']['url'].'"></a> '.$caption.PHP_EOL;;}
    else {
    $result .= "\t".'<a class="fancybox" data-fancybox-group="gallery" href="'.$value['images']['standard_resolution']['url'].'"><img id="thumb'.++$i.'" src="'.$value['images']['low_resolution']['url'].'" alt="'.$value['caption']['text'].'" width="'.$width.'" height="'.$height.'" /></a> '.$caption.PHP_EOL;}

这意味着:对于所有大于6 $result的项目都是display:none和blahblah,对于所有其他项目,$ result是带有标题的图片。

我想添加的内容是:如果计数器等于4,则打印“else”$result,仅使用src="'.$value['images']['low_resolution']['url'].'"而不是src="'.$value['images']['thumb_resolution']['url'].'"进行更改,它将是 if($i==6) { $result .= '<a style="display:none" class="fancybox" data-fancybox-group="gallery" href="'.$value['images']['standard_resolution']['url'].'"></a> '.$caption.PHP_EOL;;} elseif($i===4) { $result .= "\t".'<a class="fancybox" data-fancybox-group="gallery" href="'.$value['images']['standard_resolution']['url'].'"><img id="thumb'.++$i.'" src="'.$value['images']['thumb_resolution']['url'].'" alt="'.$value['caption']['text'].'" width="'.$width.'" height="'.$height.'" /></a> '.$caption.PHP_EOL;} else { $result .= "\t".'<a class="fancybox" data-fancybox-group="gallery" href="'.$value['images']['standard_resolution']['url'].'"><img id="thumb'.++$i.'" src="'.$value['images']['low_resolution']['url'].'" alt="'.$value['caption']['text'].'" width="'.$width.'" height="'.$height.'" /></a> '.$caption.PHP_EOL;}

我认为这会奏效,但我正在寻找一种更冷静的单行方式:D

{{1}}

3 个答案:

答案 0 :(得分:1)

查找条件运算符或三元运算符。它的使用方式如下:

$check = true;
$var = $check ? 5 : 3;

条件运算符检查?之前的表达式的值,如果表达式为真,则输出:之前的值,如果为假,则输出':'之后的值。因此上面的行将$var设置为5,因为$check为真。你也可以这样做:

$check = 2354;
$var = ($check < 40) ? 5 : 3;

那会给你相反的结果,$var会被设置为3,因为$check不符合条件$check < 40。可以把它想象成一个函数,它根据给定表达式的真值输出两个可能值中的一个。您可以将其直接嵌入到result .=中:

($i === 4) ? $value['images']['low_resolution']['url'] : $value['images']['thumb_resolution']['url'];

有关条件运算符的更多信息,您可以查看有关它的PHP文档页面here。请注意,关于条件运算符的部分是在页面下方的一点点。

答案 1 :(得分:0)

使用php的ternary operator。简单的语法是

Condition ? (if-equivalent-statement) : (else-equivalent-statement)

但是,当在另一个语句中使用此条件时,应将其括在括号中,如:

(Condition ? (if-equivalent-statement) : (else-equivalent-statement))

所以,代码应该是这样的:

if($i==6) {
    $result .= '<a style="display:none" class="fancybox" data-fancybox-group="gallery" href="'.$value['images']['standard_resolution']['url'].'"></a> '.$caption.PHP_EOL;;}
else {
//I've broken down the line to make it easier to read

    $result .= "\t".'<a class="fancybox" data-fancybox-group="gallery" href="'.$value['images']['standard_resolution']['url'].'"><img id="thumb'.++$i.'" src="'.

            (($i==4) ? $value['images']['thumb_resolution']['url'] : $value['images']['low_resolution']['url'])

            .'" alt="'.$value['caption']['text'].'" width="'.$width.'" height="'.$height.'" /></a> '.$caption.PHP_EOL;

}

答案 2 :(得分:0)

您可能会想到的是三元运算符,但它并非“真正”支持elseif并且难以阅读。

为什么不尝试更冷却的开关,但它不是一个衬垫。 :)

 switch ($i){
   case "6": 
       $result .= '<a style="display:none" class="fancybox" data-fancybox-group="gallery" href="'.$value['images']['standard_resolution']['url'].'"></a> '.$caption.PHP_EOL;
       break;
   case "4": 
       $result .= "\t".'<a class="fancybox" data-fancybox-group="gallery" href="'.$value['images']['standard_resolution']['url'].'"><img id="thumb'.++$i.'" src="'.$value['images']['thumb_resolution']['url'].'" alt="'.$value['caption']['text'].'" width="'.$width.'" height="'.$height.'" /></a> '.$caption.PHP_EOL;
       break;
   default:  
       $result .= "\t".'<a class="fancybox" data-fancybox-group="gallery" href="'.$value['images']['standard_resolution']['url'].'"><img id="thumb'.++$i.'" src="'.$value['images']['low_resolution']['url'].'" alt="'.$value['caption']['text'].'" width="'.$width.'" height="'.$height.'" /></a> '.$caption.PHP_EOL;
       break;
 }