2011-03-17 83 views
4

我有以下代码:洗牌阵列在PHP

<?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)对数组进行洗牌;但那不起作用。任何帮助表示赞赏。

+1

什么做你的代码看起来像洗牌

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

显示图像?它应该工作。也许有一组3样本,你只是碰巧是不幸的,它被拖回到同一个订单。你做过洗牌($ bb)还是洗牌($ bb ['slides'])? – Leniency 2011-03-17 02:32:32

+0

应该洗牌吗($ bb ['slides'])? – rcravens 2011-03-17 02:33:08

+0

我的实现与mt_rand比shuffle()更好http://stackoverflow.com/a/43532529/960020 – Stalingrad 2017-04-21 01:49:11

回答

9

由于$ BB是数组的数组ANB,随机播放()不会随机化的子阵列尝试

shuffle($bb['slides']); 
1
shuffle($array_name); // will shuffle array 

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

而且在foreach应

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

他的foreach循环看起来是正确的。呃...除了冒号。 :) – 2011-03-17 02:36:34

+0

@新人 - 你说得对,如果$ bb ['slides']是一个数组。对我来说,他似乎正在访问一个单一元素('幻灯片'),并尝试对其进行foreach。即我认为$ bb是他试图循环的阵列。 – Chris 2011-03-17 02:38:57

+0

实际上他的冒号也是对的。没有注意到他正在使用控制结构的替代语法。不再经常看到这一点。 – 2011-03-17 02:43:07

0

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

2

你可能打乱外$ BB阵列,当你应该做的:

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

显示内容中的随机顺序

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