【问题标题】:How to randomize images from albums [duplicate]如何随机化相册中的图像[重复]
【发布时间】:2013-09-07 15:11:32
【问题描述】:

我正在尝试制作图片库。在索引文件上,我想显示带有图像的专辑,请参阅; http://www.robcnossen.nl/

我想随机化这些相册中的图像,但我得到了各种各样的错误,例如:

警告:rand() 期望参数 1 很长,给出的字符串。

我的代码是;

foreach ($albums as $album) {
?><div><h2><?php
echo'<a href="view_album.php?album_id=', $album['id'],'">',$album['name'], '</a>';?>       </h2><?php       
    echo'<a href="view_album.php?album_id=', $album["id"],'"><img src="uploads/thumbs/', $album["id"], '/', $album["imagename"],'" title="" /></a>';
    ?></div><?php
}

$album["imagename"] 是相册内的图像,我想随机化这部分。我试过例如:

rand($album["imagename"], 0)

但这会报错。

我也尝试过随机播放;

foreach ($albums as $album) {
shuffle($album["imagename"]);
?><div><h2><?php
echo'<a href="view_album.php?album_id=', $album['id'],'">',$album['name'], '</a>';?></h2><?php      
    echo'<a href="view_album.php?album_id=', $album["id"],'"><img src="uploads/thumbs/', $album["id"], '/', $album["imagename"],'" title="" /></a>';
    ?></div><?php
}

但我也只得到错误。

谁能帮我解决这个问题?

var_dump($albums); 给了

array(2) {
   [0]=> array(8) { 
      ["id"]=> string(1) "8" 
      ["timestamp"]=> string(10) "1373890251" 
      ["name"]=> string(7) "Holland" 
      ["description"]=> string(19) "Fantastische foto's" 
      ["count"]=> string(1) "2" 
      ["imagename"]=> string(38) "KONICA MINOLTA DIGITAL CAMERA_428.jpeg" 
      ["image"]=> string(2) "63" 
      ["ext"]=> string(0) ""
   } 
   [1]=> array(8) { 
      ["id"]=> string(1) "9" 
      ["timestamp"]=> string(10) "1376914749" 
      ["name"]=> string(6) "Belgie" 
      ["description"]=> string(11) "Mooi Belgie" 
      ["count"]=> string(1) "2" 
      ["imagename"]=> string(12) "PICT0170.JPG" 
      ["image"]=> string(2) "66" 
      ["ext"]=> string(0) "" 
   }
  }

结果。

【问题讨论】:

  • 并将随机播放应用于数组而不是该数组的单个值。
  • @Robske:我们希望对特定 PHP 函数有问题的用户在手册中阅读该函数,然后解释为什么他们认为他们的代码应该工作。 “不工作”不是问题。而且您尝试了多种方法很好,并且通常是预期的。
  • 什么是$albums btw?请在您的问题中添加纯文本 var_export($albums);var_dump($albums);
  • 我首先查看了 php.net/shuffle 和其他有关 rand() 和 shuffle 的网站,这就是为什么我认为我使用 shuffle 做正确的事情,但问题是 $album[ "imagename"] 不被视为一个数组,但它在 foreach 循环中。我已经尝试了这里给出的所有解决方案,但都给出了错误,我不知道为什么......

标签: php


【解决方案1】:

shuffle 应该适合你,但如果你把它 inside foreach 循环,就像你的示例代码一样。您需要在开始循环之前 洗牌。此外,shuffle 需要与数组本身一起调用,而不是数组中的一项:

shuffle($albums);
foreach ($albums as $album) {
    ...
}

【讨论】:

  • foreach 块中没有$album 变量!也许你的意思是$albums?!
  • @hallaji 是的,谢谢。
  • 那是随机播放相册,但我想随机播放相册内的图片。
【解决方案2】:

你应该在循环之外洗牌

<?php
 shuffle($albums);
 foreach ($albums as $album) 
 {
  ?><div><h2>
 <?php
  echo'<a href="view_album.php?album_id=', $album['id'],'">',$album['name'], '</a>';
  ?>
  </h2>
  <?php      
      echo'<a href="view_album.php?album_id=', $album["id"],'"><img src="uploads/thumbs/', $album["id"], '/', $album["imagename"],'" title="" /></a>';
  ?>
  </div>
  <?php
 }

【讨论】:

  • 这如何解决他的问题?
  • @lok​​o 我忘了更正第一行代码,即 shuffle($albums);
猜你喜欢
  • 1970-01-01
  • 2013-02-15
  • 2020-09-25
  • 2021-02-26
  • 1970-01-01
  • 2020-04-14
  • 2013-02-04
  • 2013-04-13
  • 1970-01-01
相关资源
最近更新 更多