【问题标题】:How to Combine two arrays randomly in PHP如何在 PHP 中随机组合两个数组
【发布时间】:2011-05-21 13:05:30
【问题描述】:

如何将两个数组组合成一个数组,我要求第 3 个组合数组应包含一个数组中的一个值和另一个数组中的下一个值,依此类推.. 或者(它可能是随机的) 例如:

$arr1 = (1, 2, 3, 4, 5);
$arr2 = (10, 20, 30, 40, 50);

和组合数组

$arr3 = (1, 10, 2, 20, 3, 30, ...);

【问题讨论】:

  • 数组元素个数有区别吗?
  • 您显示的输出不是随机的,而是 [a1,b1,a2,b2,...,an,bn]。换句话说,源数组 a 和 b 中的元素按照它们在源数组中出现的顺序以交替方式添加到结果数组中

标签: php arrays random


【解决方案1】:

如果它可以是随机的,这将解决你的问题:

$merged = array_merge($arr1, $arr2);
shuffle($merged);

【讨论】:

    【解决方案2】:

    我还制作了一个有趣的函数,它将产生您在问题中的确切输出。无论两个数组的大小如何,它都可以工作。

    function FosMerge($arr1, $arr2) {
        $res=array();
        $arr1=array_reverse($arr1);
        $arr2=array_reverse($arr2);
        foreach ($arr1 as $a1) {
            if (count($arr1)==0) {
                break;
            }
            array_push($res, array_pop($arr1));
            if (count($arr2)!=0) {
                array_push($res, array_pop($arr2));
            }
        }
        return array_merge($res, $arr2);
    }
    

    【讨论】:

      【解决方案3】:

      这将返回一个随机数组:

      $merged = array_merge($arr1,$arr2);
      shuffle($merged);
      

      【讨论】:

      • shuffle 本身只会返回一个布尔值 true/false
      • 不,不会。 shuffle() 不返回数组,因此您的方法会将合并后的数组扔进 void 的迷雾中。
      • 啊,是的。我忘记了(哎呀)。谢谢指出
      【解决方案4】:
      sort($arr3 = array_merge($arr1, $arr2));
      

      array_merge() 会将您的数组合并为一个。 sort() 将对组合数组进行排序。

      如果你希望它是随机的而不是排序的:

      shuffle($arr3 = array_merge($arr1, $arr2));
      

      $arr3 包含您要查找的数组。

      【讨论】:

      • sort 和 shuffle 返回一个 bool,直接操作传递的(引用的)数组。
      【解决方案5】:

      你可以使用

      <?php
      arr3 = array_merge ($arr1 , $arr2 );
      print_r(arr3);
      ?>
      

      将输出在

      $arr3 = (1,2,3,4,5,10,20,30,40,50)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-04
        相关资源
        最近更新 更多