【问题标题】:PHP random image number not consistantPHP随机图片编号不一致
【发布时间】:2011-11-28 08:30:56
【问题描述】:

我正在使用一个 PHP 脚本,它从一个文本文件中获取数据并在一个 php 页面中显示三个随机图像。我遇到的问题是页面上并不总是显示三张图片:/刷新页面以查看新的随机图片时,有时只会显示 1 张图片,有时只会显示 2 张,有时会显示 3 张。我希望始终显示三个随机图像。有谁知道我可以添加什么来确保始终显示三张图像? :S

php:

 <?php 
 $random = "random.txt";
$fp = file($random);
shuffle($fp);
$keys = array_rand($fp, 3);
for ($i = 0; $i < 3; $i++):
$rl = $fp[$keys[$i]]; 
echo $rl;
endfor;
?>

html:

 <div class="imagecontainer">
 <?php include('rotate.php') ?>
 </div>

【问题讨论】:

  • 图像何时显示和何时不显示有什么逻辑吗?即某些图像永远不会显示?当一个或多个图像未显示时,您是否查看过 HTML 源代码,看看那里是否有问题? ps 你可能会发现在这种情况下使用 foreach() 而不是 for() 更容易。
  • 我只希望三个随机图像中的每一个都不同 - 因此不会同时显示重复的随机图像。当只显示 1/2 图像时,我检查了 html 源代码,它只显示只打印了一个/两个图像:(
  • 你检查过 $fp 数组的内容了吗?里面可能有空行吗?
  • 啊是的有一个空行>

标签: php image random


【解决方案1】:

array_rand() 提供文件数组的键(和值),但不会从零开始重新索引它们。 假设您的数组有 5 个元素,从 0 到 4。 然后获取随机键可以得到一个包含 (0 => "img0", 2 => "img2", 4 => "img4") 的数组。

您的循环只关心编号为 0 到 2 的索引。这就是为什么在某些情况下您会丢失一些图像。

尝试使用 for_each 循环遍历您的 $keys-array。这应该忽略数组的索引号。

【讨论】:

    猜你喜欢
    • 2012-11-09
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多