php случайный порядок с foreach - PullRequest
11 голосов
/ 23 января 2012

У меня есть foreach, это может хорошо сработать

foreach ($umm as $data) {
        echo '<img src="'.$data->picture.'" />';
        echo  $data->id;
}

Теперь я хочу перетасовать foreach. Я попробовал:

foreach (shuffle($umm) as $data) {
        echo '<img src="'.$data->picture.'" />';
        echo  $data->id;
}

И

foreach ($umm as $data) {
        $rand_pic[] = $data->picture;
        $rand_id[] = $data->id;
}
$ran = shuffle($rand_id);
foreach($ran as $new){
    echo '<img src="'.$new->picture.'" width="100" />';
    echo $new->id;
}

Все это вызвало Warning: Invalid argument supplied for foreach() в секунду foreach. Как сделать случайный заказ с foreach?

Ответы [ 3 ]

34 голосов
/ 23 января 2012

Взгляните на документацию для shuffle().Он берет ссылку на массив и перетасовывает его на место.Поэтому вам нужно использовать его в массиве, а затем выполнить итерацию:

shuffle($umm);

foreach ($umm as $data) {
        echo '<img src="'.$data->picture.'" />';
        echo  $data->id;
}
3 голосов
/ 23 января 2012

shuffle () возвращает логическое значение - массив передается по ссылке

Попробуйте это:

shuffle($umm);
foreach($umm as $new){
    echo '<img src="'.$new->picture.'" width="100" />';
    echo $new->id;
}
0 голосов
/ 20 декабря 2017

Попробуйте это Shuffle:

<?php 
   shuffle($umm);
   foreach($umm as $key => $value): ?>
	<img src="<?php echo $value->picture; ?>" alt="<?php echo $value->title;?>" />
	<?php echo $value->id;?>	  
<?php endforeach; ?>
...