PHP.从数组中返回随机值,但不等于


PHP. Return random values from an array, but not equals

我在数组中有6个值,我需要从一个数组中返回4个随机值,但不应该都相等。

示例:

如果我有一个数组(6个值)1, 2, 3, 4, 5, 6,我需要从中获得4个随机值,例如3, 1, 4, 2。目前它返回例如:2,2,3,2

这是代码:

$array= array(1, 2, 3, 4, 5, 6);
for ($i = 0; $i < 4; $i++) {
$k = array_rand($array);
$random_element = $array[$k];
echo $random_element;
}

您可以shuffle()数组,然后array_slice()其中的一些元素:

shuffle($array);
$random_elements = array_slice($array, 0, 4); // with 4 the number of random values

如果您想保留echo的旧功能,只需在循环中插入一个unset

$array= array(1, 2, 3, 4, 5, 6);
for ($i = 0; $i < 4; $i++) {
    $k = array_rand($array);
    $random_element = $array[$k];
    unset($array[$k]);
    echo $random_element;
}

但我更喜欢bwoebi的解决方案。

$array= array(1, 2, 3, 4, 5, 6);
for ($i = 0; $i < 4; $i++) {
$k = array_rand($array);
$random_element = $array[$k];
unset($array[$k]);  
echo $random_element;
}
  1. 从数组中获取随机值
  2. 从数组中移除元素,这样在下一次迭代中我们就不会得到重复的元素