在php echo

时间:2015-07-09 08:43:35

标签: php wordpress

我正在尝试设置我的WordPress网站,以便在帖子/页面分配了特色图像时,此图像将用作页面横幅。但是,如果页面没有特色图像,则必须从六个可用选项中选择一个随机图像。我试过用下面的if语句:

<div id="slider">
    <div class="theslide">
        <?php
        if ( has_post_thumbnail() ) {
            the_post_thumbnail();
        }
        else {
            echo '<img src="/wp-content/uploads/link-ship-chandlers-banner-' . $random = rand(1,6); '.jpg">';
        }
        ?>
    </div>
</div>

它有效,但随机数函数没有正常关闭,所以代码最终看起来像这样:

<div id="slider">
<div class="theslide">
    <img src="/wp-content/uploads/link-ship-chandlers-banner-6  &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

而不是这样:

<div id="slider">
<div class="theslide">
    <img src="/wp-content/uploads/link-ship-chandlers-banner-6.jpg">
</div>
</div>

我假设我的语法在回声中使用php是错误的,但我尝试的一切都有相同的问题或导致php错误。

任何帮助都将不胜感激。

提前致谢
威廉

2 个答案:

答案 0 :(得分:5)

如果您不需要知道选择了哪个标题,请执行以下操作:

echo '<img src="/wp-content/uploads/link-ship-chandlers-banner-' . rand(1,6) . '.jpg">';

在一行上使用多个;是不行的(你实际上是在告诉php解释器'.jpg">';是一个独立的命令 - 它什么都不做)

$whatever = 'something语句中分配变量(即echo)在这种情况下不会成为问题 - 尽管它确实没有任何好处。它的作用是创建一个名为$random的新变量,您可以在之后使用该变量来找出使用的标题 - 但如果在echo语句中使用结果将是不可预测的(即在您的情况下变量)将包含[random number].jpg,而不仅仅是随机数),而是首先将随机数分配给$random,如下所示:

$random = rand(1,6);
echo '<img src="/wp-content/uploads/link-ship-chandlers-banner-' . $random . '.jpg">';
echo "We are using header {$random}, which was chosen at random.";

请注意,上面的示例还显示了将变量包含在字符串中的另一种方法 - 使用双引号,您只需将变量直接写入字符串本身即可。这样做时,我建议始终使用{}来包装变量,但在这种情况下不需要 - 这允许引用更复杂的变量(例如数组元素或对象属性),并且它使整个事物也更具可读性。 / p>

其他(IMO不太可读,可能更容易出错)的解决方案包括:

$random = rand(1,6);
echo "<img src=\"/wp-content/uploads/link-ship-chandlers-banner-$random.jpg\">";
echo sprintf('<img src="/wp-content/uploads/link-ship-chandlers-banner-%d.jpg">', $random);
printf('<img src="/wp-content/uploads/link-ship-chandlers-banner-%d.jpg">', $random);

答案 1 :(得分:1)

实际上这可行,但你以;结束。 因此,删除;并添加.

echo '<img src="/wp-content/uploads/link-ship-chandlers-banner-' . $random = rand(1,6) . '.jpg">';

这样做或者你不需要设置这个变量

echo '<img src="/wp-content/uploads/link-ship-chandlers-banner-' . rand(1,6) . '.jpg">';