【问题标题】:Shuffle an array in PHP在 PHP 中随机排列一个数组
【发布时间】:2011-07-17 02:15:04
【问题描述】:

我有以下代码:

<?php
foreach($bb['slides'] as $b):
$url = "domain.com/" . $b->image . ";
echo($url);
endforeach;
?>

输出如下: domain.com/image1.jpg domain.com/image2.jpg domain.com/image3.jpg

我正在尝试随机化输出的顺序。在 foreach 语句之前,我尝试使用 shuffle($bb); 对数组进行洗牌。但这没有用。任何帮助表示赞赏。

【问题讨论】:

  • 使用 shuffle 后你的代码是什么样子的?它应该起作用了。也许使用 3 个样本集,你只是碰巧不走运,它重新洗牌到相同的顺序。你做了 shuffle($bb) 还是 shuffle($bb['slides'])?
  • 应该是shuffle($bb['slides'])?
  • 我的 mt_rand 实现比 shuffle() stackoverflow.com/a/43532529/960020

标签: php shuffle


【解决方案1】:

由于 $bb 是一个数组数组,shuffle() 不会随机化子数组,在嵌套数组上尝试shuffle 如下:

shuffle($bb['slides']);

【讨论】:

  • 成功时返回 TRUE,失败时返回 FALSE。但是如果你在洗牌后转储数组,它将被洗牌,
【解决方案2】:

随机显示内容

<?php
$myContentList = array (
    'One',
    'Two',
    'Three',
    'Four'
);
shuffle ($myContentList);
foreach ($myContentList as $displayAtRandomOrder) {
echo '<div>' . $displayAtRandomOrder . '</div>';
}
?>

随机显示图片

<?php
$myImagesList = array (
    'one.png',
    'two.png',
    'three.jpg',
    'four.gif'
);
shuffle ($myImagesList);
foreach ($myImagesList as $displayImagesAtRandomOrder) {
echo '<img src="images/' . $displayImagesAtRandomOrder . '" width="200" height="40" border="0" />';
}
?>

【讨论】:

    【解决方案3】:
    <?php
    shuffle($bb['slides']);
    foreach($bb['slides'] as $b) {
        echo $url = "domain.com/" . $b->image . ";
    }
    ?>
    

    查看此博客以获取示例说明。

    http://wamp6.com/php/str_shuffle-php/Check for array shuffle

    【讨论】:

      【解决方案4】:

      你可能在你应该做的时候改变了外部 $bb 数组:

      shuffle($bb['slides']);
      foreach($bb['slides'] as $b):
      

      【讨论】:

        【解决方案5】:

        看起来你需要做shuffle( $bb['slides'] )

        【讨论】:

          【解决方案6】:
          shuffle($array_name); // will shuffle array
          

          http://www.php.net/manual/en/function.shuffle.php

          foreach 也应该是

          for($array_name as $array_item) {
          // do stuff
          }
          

          【讨论】:

          • 他的 foreach 循环看起来是正确的。错误...除了冒号。 :)
          • @New Guy - 如果 $bb['slides'] 是一个数组,你是对的。在我看来,他似乎正在访问单个元素(“幻灯片”)并试图代替它。 IE。我认为 $bb 是他试图循环的数组。
          • 实际上他的冒号也是正确的。没有注意到他正在使用控制结构的替代语法。不再经常看到这种情况了。
          • @New Guy - 你说得对, : 语法没有错,我的 foreach 循环是为了强调外循环和内循环。牙套只是来自习惯
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-09-17
          • 1970-01-01
          • 2012-12-11
          • 1970-01-01
          相关资源
          最近更新 更多