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}}
答案 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;
}