更清洁的写作方式

时间:2013-11-18 03:19:45

标签: php

在php中编写以下代码的最有效方法是什么:

<?php

if($result === 1) {
    echo "<img src=\"1.png\" alt=\"1\" />";
} else if ($result === 2) {
    echo "<img src=\"1.png\" alt=\"1\" /><img src=\"2.png\" alt=\"2\" />";
} else if ($result === 3) {
    echo "<img src=\"1.png\" alt=\"1\" /><img src=\"2.png\" alt=\"2\" /><img src=\"3.png\" alt=\"3\" />";
}  else if ($result === 4) {
    echo "<img src=\"1.png\" alt=\"1\" /><img src=\"2.png\" alt=\"2\" /><img src=\"3.png\" alt=\"3\" /><img src=\"4.png\" alt=\"4\" />";
}

?>

可以使用循环来完成所有图像以正确的顺序显示吗?谢谢。

5 个答案:

答案 0 :(得分:4)

$template = '<img src="%d.png" alt="%d" />';

$result = 3;

$html = implode('', array_map(function($d) use($template) {
    return sprintf($template, $d, $d);
}, range(1, $result)));

var_dump($html);

答案 1 :(得分:3)

这样的东西
$str = '';
for ($i = 1; $i <= $result; $i++) {
  $str.= "<img src=\"{$i}.png\" alt=\"{$i}\" />";
}
echo $str;  // if you want to print the resulting string.

更新:为了在技术上准确,您应该将$result = min($result, 4);放在开头,以与您的示例完全匹配。不过,我不确定你的例子有多精确。

答案 2 :(得分:2)

创建一个开关结构:http://php.net/manual/en/control-structures.switch.php

switch ($result) {
case 1:
    echo "...";
    break;
case 2:
    echo "...";
    break;

答案 3 :(得分:2)

使用if else继续连接(添加)html字符串,而不是重复自己。

答案 4 :(得分:2)

我认为效率最高的是:

echo substr("<img src=\"1.png\" alt=\"1\" /><img src=\"2.png\" alt=\"2\" /><img src=\"3.png\" alt=\"3\" /><img src=\"4.png\" alt=\"4\" />", 0, 27 * $result);