2011-05-06 110 views
2

混合的更清潔的方式,我有這個PHP塊PHP開關的情況下使用HTML

<?php switch ($_GET['class_id']) { ?> 
<?php case 1: ?> 
<img src="<?php print $result['standard_image'] == "" ? "/pre_config/css/images/blue-png2.png" : "/shop_possystems/image/{$result['standard_image']}" ?>" alt="" /> 
<?php break; ?> 
<?php case 2: ?> 
<img src="<?php print $result['business_image'] == "" ? "/pre_config/css/images/blue-png2.png" : "/shop_possystems/image/{$result['business_image']}" ?>" alt="" /> 
<?php break; ?> 
<?php case 3: ?> 
<img src="<?php print $result['premium_image'] == "" ? "/pre_config/css/images/blue-png2.png" : "/shop_possystems/image/{$result['premium_image']}" ?>" alt="" /> 
<?php break; ?> 
<?php default: ?> 
<img src="<?php print $result['standard_image'] == "" ? "/pre_config/css/images/blue-png2.png" : "/shop_possystems/image/{$result['standard_image']}" ?>" alt="" /> 
<?php break; ?> 
<?php } ?> 

但這似乎有點messy..any建議

+0

可以減少PHP標籤 – 2011-05-06 16:44:53

+0

聖牛,這是一個很多的標籤! – Kelly 2011-05-06 16:46:08

+1

我的大腦傷害:( – Hannes 2011-05-06 16:56:30

回答

10

爲什麼所有的情況下,擺在首位?你只是選擇要使用的圖像。

​​

額外的好處:邏輯的目的是更清晰。

+0

+1我正在寫這個過程。 – 2011-05-06 16:52:17

+0

這很好.... +1 – gd1 2011-05-06 16:52:33

0

您可以在case語句中的回聲的img標籤

1

我同意,該代碼是瘋狂的。

將所有PHP代碼寫入一個<?php ?>塊。當您必須打印某些內容時,請使用打印功能或回顯結構。

聲明變量,可以幫助你閱讀和理解的代碼。

例如:

<?php 

switch ($_GET['class_id']) { 
    case 1: 
     $imgpath = ($result['standard_image'] == "") ? "/pre_config/css/images/blue-png2.png" : "/shop_possystems/image/{$result['standard_image']}"; 
     echo '<img src="'.$imgpath.'" alt="" />'; 
     break; 
    case 2: 
     // and so on for the other cases... 
} 

?> 

是不是有點不太凌亂?

+0

較雜亂應該包括乾淨明確的邏輯沒有重複imo – 2011-05-06 16:49:33

+0

這將是更好的。但這是一個起點;) – gd1 2011-05-06 16:50:25

2
switch($_GET['class_id']) 
{ 
    case 1: 
     $source = '/images/src1.png'; 
     $class = 'yourClass'; 
     $alt = 'yourAlt'; 
    break; 

    case 2: 
     $source = '/images/src2.png'; 
     $class = 'yourClass2'; 
     $alt = 'yourAlt2'; 
    break; 

    case 3: 
     $source = '/images/src3.png'; 
     $class = 'yourClass3'; 
     $alt = 'yourAlt3'; 
    break; 

    default: 
     $source = '/images/src4.png'; 
     $class = 'yourClass4'; 
     $alt = 'yourAlt4'; 
    break; 
} 

$image = <<<EOF 
<img src="$source" class="$class" alt="$alt" /> 
EOF; 

echo $image; 
1
<?php 
$image = $result['standard_image']; 
switch ($_GET['class_id']) { 
    case 2: $image = $result['business_image']; break; 
    case 3: $image = $result['premium_image']; break; 
} 
?> 
<img src="<?php print $image == "" ? "/pre_config/css/images/blue-png2.png" : "/shop_possystems/image/{$image}"; ?>" alt="" /> 

你並不需要打開和關閉PHP標記每一行。

1
<?php 
$img = ''; 
switch ($_GET['class_id']) { 
    case 1 : 
    $img = $result['standard_image']; 
    break; 
    case 2 : 
    $img = $result['business_image']; 
    break; 
    case 3 : 
    $img = $result['premium_image']; 
    break; 
    default : 
    $img = $result['standard_image']; 
    break; 
} 
if (!$img) { 
    $img = 'blue-png2.png'; 
} 
?> 
<img src="<?php print $img; ?>" alt="" /> 

您可以刪除換行符,你認爲合適......我始終格式化的東西作爲一個原則,你也應該這麼做! :)

+0

+1這是很好,但我不喜歡它依靠PHP鴨子打字(見'if(!$ img)')看起來很聰明,但實際上並不太清楚。然而,做得好 – gd1 2011-05-06 16:54:55

0

如果您想使用的開關,我建議像下面這樣。

<?php 
    $img_type = ''; 
    switch ($_GET['class_id']) { 
    case 1: 
     $img_type = 'standard_image'; 
     break; 
    case 2: 
     $img_type = 'business_image'; 
     break; 
    case 3: 
     $img_type = 'premium_image'; 
     break; 
    default: 
     $img_type = 'standard_image'; 
     break; 
    } 
    $src = $result[$img_type] == "" ? "/pre_config/css/images/blue-png2.png" : "/shop_possystems/image/{$result[$img_type]}"; 
?> 
<img src="<?php print $src ?>" alt="" /> 
1
$array = array(
    array('/images/src1.png', 'yourClass', 'yourAlt'), 
    array('/images/src2.png', 'yourClass2', 'yourAlt2'), 
    array('/images/src3.png', 'yourClass3', 'yourAlt3')); 


echo '<img src="'.$array[$_GET['class_id']][0].'" class="'.$array[$_GET['class_id']][1].'" alt="'.$array[$_GET['class_id']][2].'" />'; 
1

我會去的實際上是把這個塊中,並使用一些預定義變量。一點點清潔,至少對我來說...

<?php 
$p = "/pre_config/css/images/blue-png2.png"; 
$s = "/shop_possystems/image/"; 
switch ($_GET['class_id']) { 
    case 1: 
     $x = (empty($result['standard_image']) ? $p : "{$s}/{$result['standard_image']}"; 
     break; 
    case 2: 
     $x = (empty($result['business_image']) ? $p : "{$s}/{$result['business_image']}"; 
     break; 
    case 3: 
     $x = (empty($result['premium_image']) ? $p : "{$s}/{$result['standard_image']}"; 
     break; 
    default: 
     $x = (empty($result['standard_image']) ? $p : "{$s}/{$result['standard_image']}"; 
     break; 
} 

echo "<img src=\"{$x}\" alt=\"\" />"; 

?>

1

是...

<?php 
$a = array(0, 0, 'business_image', 'premium_image'); 
$t = $a[(int)$_GET['class_id']] || "standard_image"; 
echo "<img src=\""; 
echo $result[$t] === "" ? "/pre_config/css/images/blue-png2.png" : "/shop_possystems/image/{$result['standard_image']}"; 
echo "\" />"; 
?>