Перемешать массив в PHP - PullRequest
4 голосов
/ 17 марта 2011

У меня есть следующий код:

<?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);но это не сработало.Любая помощь приветствуется.

Ответы [ 6 ]

9 голосов
/ 17 марта 2011

Поскольку $ bb является массивом массивов, shuffle () не будет рандомизировать подмассив, попробуйте shuffle для вложенного массива следующим образом:

shuffle($bb['slides']);
3 голосов
/ 17 марта 2011

Вы, вероятно, перетасовали внешний массив $ bb, когда должны были сделать:

shuffle($bb['slides']);
foreach($bb['slides'] as $b):
1 голос
/ 11 сентября 2011
<?php
shuffle($bb['slides']);
foreach($bb['slides'] as $b) {
    echo $url = "domain.com/" . $b->image . ";
}
?>

Проверьте этот блог для объяснения с примером.

http://wamp6.com/php/str_shuffle-php/ Проверка на перемешивание массива

1 голос
/ 17 марта 2011
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 голосов
/ 27 октября 2013

Отображение содержимого в случайном порядке

<?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" />';
}
?>
0 голосов
/ 17 марта 2011

Похоже, вам нужно сделать shuffle( $bb['slides'] ).

...