【问题标题】:How to shuffle list in PHP如何在 PHP 中打乱列表
【发布时间】:2016-05-27 11:03:44
【问题描述】:

我一直在查看 stackoverflow,但没有找到任何可以回答我的问题的问题,即如何在不获取关联数组的情况下对列表进行洗牌。由于我的代码使用shuffle_assoc我得到了关联数组,但是使用 shuffle 并没有让我到任何地方,所以现在我转向这里。

        function shuffle_assoc($list) {
            if (!is_array($list)) return $list;

            $keys = array_keys($list);
            shuffle($keys);
            $random = array();
            foreach ($keys as $key) {
                $random[] = $list[$key];
            }
            return $random;
        }

        $arr = array();
        $arr[] = "test 1<br>";
        $arr[] = "test 2 <br>";
        $arr[] = "test 3 <br>";
        $arr[] = "test 4 <br>";
        print_r(shuffle_assoc($arr));
 ?>

This is how it looks when I run the code

但是我不想显示Array ([0] =&gt; 部分,我只想在每次运行代码时随机打乱测试(1/2/3/4)列表。

【问题讨论】:

  • 为什么不直接使用shuffle($arr);
  • 已经尝试过 shuffle 并且我也去看了那个帖子,但是它并没有解决我的问题,但是 nospor 的回答确实。

标签: php


【解决方案1】:

print_r 函数按原样显示数据。所以当你给它数组时它会打印数组。您需要将数组内爆成字符串:

echo  implode('',shuffle_assoc($arr));

编辑:
或者只是

echo  implode('',shuffle($arr));

【讨论】:

  • 简单的shuffle函数就可以完成这项工作,为什么要做这么复杂的事情呢?仅使用 shuffle 和 implode。
  • 不,不要更新主代码。只需添加另一种简单的方式。
  • 好的,所以我再次更新了我的答案。我希望这次没事:)
【解决方案2】:

试试这个:

$array = shuffle($arr);
foreach($array as $a)
{
    echo $a;
}

【讨论】:

  • 我认为@TomasBerger 只想在页面上输出行并在每次代码运行时对其进行洗牌。所以我认为我的代码达到了他的目的。
猜你喜欢
  • 2013-07-12
  • 1970-01-01
  • 1970-01-01
  • 2021-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多