2016-12-14 5 views
1

Есть ли способ, чтобы закодировать эту функцию/исполняемый файл ..Упрощенная анархию «если заявление»

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

. Более простым способом? Спасибо.

+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'; 

Этот использует тройной оператор для эха 'default.jpg', если count($img) равен 0.

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

Если вы знаете номер документа изображения, вы могли бы сделать что-то вроде этого:

<?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, если строка не пустая. Они просят лучшего способа сделать это, а не то же самое. –