php 来自foreach的php随机顺序

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/8966037/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-26 05:52:16  来源:igfitidea点击:

php random order from a foreach

phprandomforeachshuffle

提问by fish man

I have some foreach, this could work well

我有一些 foreach,这可以很好地工作

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

Now I want shuffle the foreach. I tried:

现在我想洗牌 foreach。我试过:

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

AND

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

All these caused Warning: Invalid argument supplied for foreach()in second foreach. How to random order from a foreach?

这一切都是Warning: Invalid argument supplied for foreach()在第二次造成的foreach。如何从foreach中随机排序?

回答by Ry-

Take a look at the documentation for shuffle(). It takes a referenceto an array and shuffles it in place. So you need to use it on the array, then iterate:

看一看文档shuffle()。它需要对数组的引用并将其改组到位。所以你需要在数组上使用它,然后迭代:

shuffle($umm);

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

回答by HorusKol

shuffle()returns a boolean - you pass the array by reference

shuffle()返回一个布尔值 - 您通过引用传递数组

Try this:

尝试这个:

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

回答by Rafiqul Islam

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