php случайный порядок из foreach

у меня есть некоторые 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 ответов


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

shuffle($umm);

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

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

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

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

Попробуйте Это Перетасовать:

<?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; ?>