为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
烙印99 2019-03-15 09:28:19
一个数组里多个关键词,随机组合输出。刷新组合顺序不一样输出字符串 $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]]; 这个就差点符合我的要求了。但是组合的数据会重复应该不难,但是我是小白。来个大哥帮忙阿
查看完整描述

3 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

最简单的方式

$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); // 将取出的元素用,组合成字符串输出
查看完整回答
反对 回复 2019-03-18
?
12345678_0001

TA贡献1802条经验 获得超5个赞

// 打乱数组
shuffle($a);
// 取数组前三个串接成字符串
return implode('', array_slice($a, 3));
// 输出可能是:greenbrownred
查看完整回答
反对 回复 2019-03-18
?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

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

查看完整回答
反对 回复 2019-03-18
  • 3 回答
  • 0 关注
  • 471 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信