2012-01-23 32 views
8

Tôi có một số foreach, điều này có thể làm việc tốtphp thứ tự ngẫu nhiên từ một foreach

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

Bây giờ tôi muốn shuffle foreach. Tôi cố gắng:

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

Tất cả những gây ra Warning: Invalid argument supplied for foreach() thứ hai foreach. Làm thế nào để đặt hàng ngẫu nhiên từ một foreach?

Trả lời

26

Hãy xem the documentation for shuffle(). Phải mất một tham chiếu cho một mảng và xáo trộn nó tại chỗ. Vì vậy, bạn cần phải sử dụng nó trên mảng, sau đó lặp:

shuffle($umm); 

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

shuffle() trả về một boolean - bạn vượt qua mảng bằng cách tham khảo

Hãy thử điều này:

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

Hãy thử ngẫu nhiên này:

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

Các vấn đề liên quan