2016-12-14 91 views
1

有沒有辦法實現代碼函數/可執行..簡化無政府狀態「if語句」

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

..in一個更簡單的方法?謝謝。

+0

是的....有。使用'switch' –

+0

@JayBlanchard請告訴。 –

+0

你的意思是說,'if(imgX!=「」){...'? –

回答

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'。

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; 

不知道你要完成或爲什麼代碼看起來像,似乎從結構不佳得到什麼去。

+1

關閉,但你需要''{「img」。$ i}''。 –

+0

謝謝@JonathanKuhn修復,這是難看的代碼,OP應該找到更好的方法。 – systematical

+0

我知道它的構造很糟糕,那是爲什麼我問這個問題。我現在想要達到的目標,我將在主要問題中解釋。 –

0

如果您知道圖像的ID號,你可以做這樣的事情:

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

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

如果他們知道索引號,他們會知道要顯示哪個'$ imgX'。他們試圖做的是找到索引(在這種情況下,它與變量中未知的'X'相同)。 –

0

你可以做

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

因爲您只想顯示其中之一。

+0

這與現在的代碼有什麼不同或簡潔?如果字符串不爲空,'$ img1>'''和'!empty($ img1)'都將返回true。他們正在尋求一種更好的方式去做,而不是一樣的。 –