php显示随机图像

时间:2017-11-08 00:56:17

标签: php wordpress

我写过这个小代码来显示一个数组中的随机图像,但由于一些奇怪的原因,我无法弄清楚我哪里出错了。我已经改变了几次代码,但无济于事。我之前也有代码,不需要一个数组来显示文件夹中的图片,但遗憾地丢失了它。     

            <?php

        $images = array('red.turtle','justice.league','logan','kong.skull.island','alien.covenant','spider-man.homecoming','thor.ragnarok','star.wars.viii','xxx.the.return.of.xander.cage','the.lego.batman.movie','wonder.woman','beauty.and.the.beast','war.for.the.planet.of.the.apes','transformers.the.last.knight','kingsman.the.golden.circle','the.mummy','t2.trainspotting','split','the.salesman','the.lure');

        function randomImage() {
            $interval = 2; // seconds
            srand(floor(time() / $interval));
            ?>
            <img src="<?php echo get_template_directory_uri(); ?>/img/mov_pic/<?php $images[rand(0,19)]?>.jpg";
        <?php }; ?>

        </div>

PS。间隔值仅用于编码目的,以查看代码是否正常工作。

4 个答案:

答案 0 :(得分:0)

问题在于您尝试将$ images数组引用到范围之外。尝试将其添加到您的功能中。

IE:

function randomImage() {
      $images = array('red.turtle','justice.league','logan','kong.skull.island','alien.covenant','spider-man.homecoming','thor.ragnarok','star.wars.viii','xxx.the.return.of.xander.cage','the.lego.batman.movie','wonder.woman','beauty.and.the.beast','war.for.the.planet.of.the.apes','transformers.the.last.knight','kingsman.the.golden.circle','the.mummy','t2.trainspotting','split','the.salesman','the.lure');
      echo $images[rand(0,19)];
 }

答案 1 :(得分:0)

你必须添加一个&#34; echo&#34;在图像数组中的rand之前:

<?php echo $images[rand(0,19)]?>

答案 2 :(得分:0)

您的代码正在运行但是在randomImage范围内无法访问$ images变量,您必须将其称为randomImage函数内的全局函数或将其作为函数参数传递。

简单:https://3v4l.org/aJj31

更简单:https://3v4l.org/DpHYF

public static <K, V> Map<K, V> sortByValues(Map<K, V> map, Comparator<? super V> comparator) {
    return map.entrySet()
            .stream()
            // sort entries by applying given comparator to values
            .sorted(Comparator.comparing(Map.Entry::getValue, comparator))
            // collect into a LinkedHashMap using Collectors.toMap
            .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a, b) -> {
                // map should never contain duplicate keys
                throw new AssertionError();
            // Collectors.toMap always adds elements in encounter order; using LinkedHashMap here preserves ordering
            }, LinkedHashMap::new));
}

答案 3 :(得分:0)

如果您不想定义图像,可以使用glob查找目录中的所有jpg个文件。

function randomImage()
{
    $directory = get_template_directory() . "/img/mov_pic";
    $images = glob($directory . "*.jpg");

    return !empty($images) ? get_template_directory_uri() . "/" . $images[array_rand($images)] . ".jpg" : "";
}

echo '<img src="' . randomImage() . '">';