【问题标题】:Show randow image on each loop of foreach without it duplication in PHP在 foreach 的每个循环上显示随机图像,而不在 PHP 中重复
【发布时间】:2018-05-01 09:26:03
【问题描述】:

我有 10 张图像存储为一个数组。 我还有一个 foreach 可以生成 10 个项目。 我的目标是将此数组中的随机图像添加到由 foreach 生成的每个项目中,而且图像不应重复。

例如:

1 项 - img1.jpg;

2 项 - img3.jpg;

3 项 - img9.jpg... 等等

<?php
    $rss = simplexml_load_file('https://news.google.com/news/rss/headlines/section/q/blockchain/blockchain?ned=us&hl=en&gl=US');

    $images = array('img1.jpg', 'img2.jpg', 'img3.jpg', 'img4.jpg', 'img5.jpg', 'img6.jpg', 'img7.jpg', 'img8.jpg', 'img9.jpg', 'img10.jpg');
    shuffle ($images);

    foreach ($rss->channel->item as $item) {
        foreach ($images as $image) {
            echo $image."<br/>"."<br/>";
        }
        echo $item->title."<br/>";
        echo $item->link."<br/>";
        echo $item->pubDate."<br/>";
    }
?>

此代码为我返回项目的随机图像,但有时它们是重复的。

是否可以在 PHP 中实现?

【问题讨论】:

  • 随机数可以复制,只要不自己检查号码是否已经存在
  • 我知道。这就是为什么我要问我如何在 PHP 中做到这一点?
  • 随机排列数组并在循环的末尾弹出一个。

标签: php arrays random foreach duplicates


【解决方案1】:

就像@jeroen说的你只需要洗牌,数组初始化应该在foreach之外!

$images = array('img1.jpg', 'img2.jpg', 'img3.jpg', 'img4.jpg', 'img5.jpg', 
'img6.jpg', 'img7.jpg', 'img8.jpg', 'img9.jpg', 'img10.jpg');
shuffle ($images);
foreach ($images as $image) {
   print $image;
}

将此应用于您的案例:

<?php
$rss = simplexml_load_file('https://news.google.com/news/rss/headlines/section/q/blockchain/blockchain?ned=us&hl=en&gl=US');

$images = array('img1.jpg', 'img2.jpg', 'img3.jpg', 'img4.jpg', 'img5.jpg', 'img6.jpg', 'img7.jpg', 'img8.jpg', 'img9.jpg', 'img10.jpg');
shuffle ($images);
$i = 0;
foreach ($rss->channel->item $item) {

    echo $images[$i]."<br/>"."<br/>";
    echo $item->title."<br/>";
    echo $item->link."<br/>";
    echo $item->pubDate."<br/>";
    $i++;
}

?>

【讨论】:

  • 谢谢。由于您的回答,我修改了我的代码。但是我仍然有一个问题。当我将你的 foreach 放入我的时,我得到的结果如下:10 张图片 + item1、10 张图片 + item2。有机会解决吗?
  • 没有你和我的foreach,只有一个foreach,让我为我的答案添加一些见解
  • 一定是key不正确,换个变量试试,我更新了答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-24
相关资源
最近更新 更多