2011-03-17 161 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" />'; 
} 
?>