在PHP中洗牌数组

在PHP中洗牌数组,php,shuffle,Php,Shuffle,我有以下代码: <?php foreach($bb['slides'] as $b): $url = "domain.com/" . $b->image . "; echo($url); endforeach; ?> 同样,foreach应该是 for($array_name as $array_item) { // do stuff } 由于$bb是一个数组数组,shuffle()不会随机化子数组,请在嵌套数组上尝试shuffle,如下所示: shuffle($bb[

我有以下代码:

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

同样,foreach应该是

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

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

shuffle($bb['slides']);

看起来您需要执行
shuffle($bb['slides'])

您可能已经执行了外部$bb数组的shuffle,而您本应执行以下操作:

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

以随机顺序显示内容

<?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" />';
}
?>

以随机顺序显示图像

<?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" />';
}
?>


使用shuffle时,您的代码是什么样子的?这本应该奏效的。也许对于一个3的样本集,你只是碰巧运气不好,它又回到了原来的顺序。你做过洗牌($bb)还是洗牌($bb['slides'])?应该是洗牌($bb['slides'])?我用mt_rand实现的比洗牌更好()他的foreach循环看起来是正确的。呃……除了冒号。:)@新手-如果$bb['slides']是一个数组,那么你是对的。在我看来,他似乎正在访问一个元素(“幻灯片”),并试图访问该元素。也就是说,我认为$bb是他试图循环的数组。实际上他的冒号也是正确的。没有注意到他正在使用控制结构的替代语法。我不再经常看到这种情况了。@New Guy-你说得对,语法没有问题:我的foreach循环强调了外部循环和内部循环。大括号只是来自habitIt,成功时返回TRUE,失败时返回FALSE。但是如果你在洗牌后转储数组,它将被洗牌,