创建没有重复元素的随机数组

约翰 :

我有如下数组:

$myArray = ['a', 'b', 'c', 'd', 'e', 'f'];

我需要在循环中使用字符串与该项目联系,我尝试如下操作:

foreach($products as $product) {
    echo $myArray[array_rand($myArray)] . '-' . $product['name']   
}

这可能是那个的输出

c-红皮书
c-黑色电话
a-绿皮书
e-粉色笔记本电脑a-
蓝色衬衫

如您所见,前两行的前缀相同,这在这里是不可接受的。重复很好(同一前缀可以多次出现),但不能在相邻的两行中重复。

Qirel:

您需要将先前的值存储在一个变量中,然后生成一个新的随机值,直到它与先前的值不同为止,因此需要进行一点递归检查。如果count($myArray) > 1数组中只有1个值(这将导致无限循环),我们还将添加一个check

我们使用一个while循环是因为有一个机会,尽管非常小,但如果该值等于前一个值,那么下一个值也将等于前一个值。实际上,对于大多数项目,while循环通常永远不会重复进行多次(这就是我在循环中使用循环的理由)。

$previous = null;
foreach($products as $product) {
    do {
        $prefix = $myArray[array_rand($myArray)];
    } while ($prefix === $previous && count($myArray) > 1);
    $previous = $prefix;
    echo $prefix . '-' . $product['name'];
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章