2012-01-23 20 views
8

mam pewne foreach, to może pracować równieżphp losowego z foreach

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

Teraz chcę shuffle foreach. Próbowałem:

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

I

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

Wszystko to spowodowane Warning: Invalid argument supplied for foreach() w drugim foreach. Jak losowa kolejność z foreach?

Odpowiedz

26

Spójrz na the documentation for shuffle(). Zajmuje ona odniesienia do tablicy i tasuje ją w miejscu. Więc trzeba używać go na tablicy, następnie iteracyjne:

shuffle($umm); 

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

shuffle() zwraca wartość logiczną - mijamy tablicę poprzez odniesienie

Spróbuj tego:

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

Try This Shuffle:

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