我有如下数组:
$myArray = ['a', 'b', 'c', 'd', 'e', 'f'];
我需要在循环中使用字符串与该项目联系,我尝试如下操作:
foreach($products as $product) {
echo $myArray[array_rand($myArray)] . '-' . $product['name']
}
这可能是那个的输出
c-红皮书
c-黑色电话
a-绿皮书
e-粉色笔记本电脑a-
蓝色衬衫
如您所见,前两行的前缀相同,这在这里是不可接受的。重复很好(同一前缀可以多次出现),但不能在相邻的两行中重复。
您需要将先前的值存储在一个变量中,然后生成一个新的随机值,直到它与先前的值不同为止,因此需要进行一点递归检查。如果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] 删除。
我来说两句