Php 写这篇文章而不重复我自己的最好方式是什么

Php 写这篇文章而不重复我自己的最好方式是什么,php,logic,Php,Logic,php文件将从表单接收1到30之间的变量,使用 $style = $_GET['style']; 然后我想传递$style来帮助我选择用户选择的css stlye,例如,如果选择的是style 3,那么css stlye 3将传递给如下图像 <img style="<?php $choice3?>"; src="xxx.png" /> 到目前为止,我得到的是这个 <?php $style = $_GET['style']; function choi

php文件将从表单接收1到30之间的变量,使用

 $style = $_GET['style'];
然后我想传递$style来帮助我选择用户选择的css stlye,例如,如果选择的是style 3,那么css stlye 3将传递给如下图像

<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        
?>                  


我很确定有一种更简单、更聪明的方法来表达我的逻辑。

数组怎么样?在使用下面的代码之前,不要忘记检查
$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" />

似乎只有填充值在更改,为什么不尝试此操作:

 $style = $_GET['style'];

    <img style="display: block;padding:<?php echo $choice3; ?>px;"  src="xxx.png" />
$style=$\u GET['style'];

我会将您的函数更改为处理所有边框,而不是具有多个边框,例如:

  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;
  }

我认为您的代码看起来还可以,但是在var之前需要打印/回显

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

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

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

我将传递一个类名,而不是应用样式

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


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

我可以这样设置它:

$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" />
函数getStyles($style){ 返回$myStyles[$style-1]; }
未测试…

您正在设置的其他值是什么?也许我们能够看到一种模式。填充总是*2。src总是xxxpng吗?你能把xxx和$style联系起来吗?(好的智能问题顺便说一句)您对style的调用需要调用函数而不是$choice2,choice2()@TobiasKun这些值完全不同,因为有些函数会给出圆角边框和小边框etc@Cups不完全是,每个图像的名称都会有所不同,虽然ext将是png或jpg+1,但我还建议您将内联样式替换为CSS类名+1。使用数组的好方法。Switch子句会让人困惑。但如果提问者展示了更多的代码,我们或许可以将其简化得更多。@TobiasKun:确实如此,但他的现有代码甚至没有意义,所以我使用了我拥有的代码。:)@黑暗猎鹰,我喜欢,我非常喜欢,所以我会确保在提交的表单上检查它是否正确(范围),让我试试你的solution@DarkFalcon:这不是一项指控:)我只是想了想,但既然他澄清css属性差异很大,这就是最好的答案!由于css中没有“etc”属性,我认为他还设置了一些其他值。@TobiasKun,是的,在这种情况下dark的答案是最好的。因为有30多个可能的值,数组将是像@DarkFalcon建议的更好的方法。