2011-05-06 124 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 "\" />"; 
?>