【问题标题】:PHP. Return random values from an array, but not equalsphp。从数组中返回随机值,但不等于
【发布时间】:2014-09-25 11:39:37
【问题描述】:

我在数组中有 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;
}

【问题讨论】:

    标签: php arrays sorting random equals


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回答。它返回 ArrayArrayArrayArray
    • @Infinity 好吧,你需要用随机元素遍历数组,比如foreach ($random_elements as $value) { echo $value; }
    • @Infinity 答案是正确的,如果你想作为字符串,那么用 , 将它内爆。 +1 小而清晰的答案
    【解决方案2】:

    如果您想使用 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 的解决方案。

    【讨论】:

      【解决方案3】:
      $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. 从数组中移除元素,这样在下一次迭代中我们不会得到重复的元素

      【讨论】:

      • 请对您的代码添加一些解释,说明它的作用以及它如何解决问题。这将有助于其他人在未来看到您的答案
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-22
      • 1970-01-01
      • 2021-12-26
      • 1970-01-01
      相关资源
      最近更新 更多