什么是最好的方式来写这个而不重复自己

时间:2013-08-13 15:12:19

标签: php logic

php文件将使用

从表单接收1到30之间的变量
 $style = $_GET['style'];

我想传递$ style以帮助我选择用户选择的css stlye,例如如果选择样式3则css stlye三将传递给这样的图像

<img style="<?php $choice3?>";  src="xxx.png" />

所以我到目前为止就是这个

<?php
 $style = $_GET['style'];

function choice1()
{
$choice1 = "display: block;padding:5px; etc, etc etc";
      return $choice1;      }   
function choice2()
{
$choice2 = "display: block;padding:10px; etc, etc etc";
    return $choice2;        }   
function choice3()
{
$choice3 = "display: block;padding:20px; etc, etc etc";
    return $choice3;        }   

if ($style == 1){
?>
<img style="<?php $choice1?>";  src="xxx.png" />
<?php 
}
if ($style == 2){
?>
<img style="<?php $choice2?>";  src="xxx.png" />
<?php 
}
.......and so on till 30        
?>                  

我很确定有一种更简单明智的方式来传达我的逻辑。

5 个答案:

答案 0 :(得分:6)

阵列怎么样?在使用下面的代码之前,请不要忘记检查$style是否在适当的范围内。

<?php
$style = $_GET['style'];
$styles = array(
  1=>"display: block;padding:5px; etc, etc etc",
  2=>"display: block;padding:15px; etc, etc etc",
  3=>"display: block;padding:35px; etc, etc etc",
  4=>"display: block;padding:55px; etc, etc etc",
  // etc.
);
?>

<img style="<?php echo $styles[$style]; ?>";  src="xxx.png" />

答案 1 :(得分:0)

似乎只有填充值正在改变,为什么你没有尝试这个:

 $style = $_GET['style'];

    <img style="display: block;padding:<?php echo $choice3; ?>px;"  src="xxx.png" />

答案 2 :(得分:0)

我会改变你的功能来处理所有的边界,而不是像以下那样有多个:

  function border($style){
  switch ($style) {
    case 0:
        $border = "display: block;padding:5px; etc, etc etc";
        break;
    case 1:
        $border = "display: block;padding:5px; etc, etc etc";
        break;
    case 2:
        $border = "display: block;padding:5px; etc, etc etc";
        break;
    default:
        $border = "display: block;padding:5px; etc, etc etc";
   }
   return $border;
  }

答案 3 :(得分:0)

我认为您的代码看起来没问题 - 但在var。

之前需要打印/回显
<img style="<?php print $choice2; ?>" src="..." />

此外,您可以尝试使用switch语句。

-----编辑-----

我没有应用样式,而是传递一个类名。

<img class="<?php print $choice2; ?>" src="..." />

然后,您始终可以在样式表中指定CSS而不是内联。

答案 4 :(得分:0)

我可能会这样设置:

$myStyles = new Array();
$myStyles[0] = "display: block;padding:5px; etc, etc etc";
$myStyles[1] = "display: block;padding:10px; etc, etc etc";

等...

function getStyles($style){
      return $myStyles[$style - 1];
}

<img style="<?php echo getStyles($_GET['style']; ?>";  src="xxx.png" />

未经测试......