【求助】php数组,随机组合输出字符串,刷新网页重新组合顺序,不重复

一个数组里多个关键词,随机组合输出。刷新组合顺序不一样
输出字符串

$a=array("red","green","blue","yellow","brown");
$random_keys=array_rand($a,4);
echo $a[$random_keys[0]]."
";
echo $a[$random_keys[1]]."
";
echo $a[$random_keys[2]];

这个就差点符合我的要求了。
但是组合的数据会重复
应该不难,但是我是小白。
来个大哥帮忙阿

阅读 2.2k
3 个回答

最简单的方式

$a = ["red", "green", "blue", "yellow", "brown"];
shuffle($a);    // 打乱数组
echo array_shift($a);    // 或者用array_pop函数也可以,这样组合数据就不会重复了
echo array_shift($a);
echo array_shift($a);

注意,这个方式会改变原数组,如果不希望改变原数组的话,那就需要加一次判断

$a = ["red", "green", "blue", "yellow", "brown"];
shuffle($a);
$has = [];    // 保存取出来的元素

// 判断元素是否获取过并且取出的元素个数是否已经满足需求
while (!in_array($a[0], $has) && count($has) <= 3) {
    $has[] = $a[0];
}

echo implode(',', $has); // 将取出的元素用,组合成字符串输出
// 打乱数组
shuffle($a);
// 取数组前三个串接成字符串
return implode('', array_slice($a, 3));
// 输出可能是:greenbrownred

感觉你需要的是洗牌算法,洗牌算法就是shuffle函数。

推荐问题