简化无政府状态" if statement"

时间:2016-12-14 18:57:30

标签: php

有没有办法对这个函数/可执行文件进行编码..

if($img1 > "") 
{ 
$show = $img1; 
}
elseif($img2 > "") 
{ 
$show = $img2; 
}
elseif($img3 > "") 
{ 
$show = $img3; 
}
else
{
$show = 'default.jpg';
}
echo $show;

..以更简单的方式? THX。

4 个答案:

答案 0 :(得分:2)

任何时候你最终都使用名为1,2,3等的变量,这意味着你应该使用一个数组。

如果你有这样的话,例如:

$img = [
1=> '',
2=> '',
3=> 'image.jpg'
];

然后您可以这样处理:

// Remove empty values
$img = array_filter($img);
// Echo the first value found (image.jpg)
echo current($img);

或者添加默认值:

echo (count($img)) ? current($img) : 'default.jpg';

如果count($img)为0,则使用三元运算符来回显'default.jpg'。

答案 1 :(得分:0)

没有测试,但是这样的事情:

<?php

$img1 = 'hello';
$img2 = 'world';

$array = [1,2,3];
for($i=1; $i<count($array); $i++){
    $v = ${"img{$i}"};
    if( !empty($v) ){
        $show = $v;
        break;
    }
}
echo $show;

不知道你想要完成什么或为什么代码看起来像这样,从一开始就看起来很糟糕。

答案 2 :(得分:0)

如果你知道图像的ID号,你可以这样做:

<?php
$images = array(
'myimg.jpg',
'my_awesome_img.jpg',
'awesome_awesome.jpg'
);

$show = $images[$x];
?>

答案 3 :(得分:0)

你可以做到

if(!empty($img1)) { 
  echo $img1; 
} elseif(!empty($img2)) { 
  echo $img2; 
} elseif(!empty($img3)) { 
  echo $img3; 
} else {
  echo 'default.jpg';
}

鉴于您只想显示其中一个。