2012-01-23 58 views
8

tengo algo de foreach, esto podría funcionar bienphp orden aleatorio de un foreach

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

Ahora quiero mezclar el foreach. Probé:

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

Y

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

Todos estos causada Warning: Invalid argument supplied for foreach() en segundo foreach. ¿Cómo hacer un pedido aleatorio de un foreach?

Respuesta

26

Eche un vistazo a the documentation for shuffle(). Lleva una referencia a una matriz y la mezcla en su lugar. Así que hay que usarlo en la matriz, a continuación, iterar:

shuffle($umm); 

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

shuffle() devuelve un valor lógico - se pasa la matriz por referencia

Prueba esto:

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

intenta esto aleatoria:

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

Cuestiones relacionadas