【问题标题】:PHP generate 3 combination from arrayPHP从数组生成3个组合
【发布时间】:2016-12-27 10:49:43
【问题描述】:

我将合并以下数组: 该数组将与自身合并

Array (

[0] => Array

    (
        [0] => 1
        [1] => 2
    )

[1] => Array
    (
        [0] => 1
        [1] => 3
    )

[2] => Array
    (
        [0] => 1
        [1] => 4
    )

[3] => Array
    (
        [0] => 2
        [1] => 3
    )

[4] => Array
    (
        [0] => 2
        [1] => 4
    )

[5] => Array
    (
        [0] => 3
        [1] => 4
    )
);

合并后会产生这样的数组:

Array (

[0] => Array
    (
        [0] => 1
        [1] => 2
        [2] => 3
    )

[1] => Array
    (
        [0] => 1
        [1] => 2
        [2] => 4
    )

[2] => Array
    (
        [0] => 2
        [1] => 3
        [2] => 4
    )

);

例如,从 1.2 与 1.3 结合将产生 1,2,3 或从 1,2 与 1,4 = 1,2,4

【问题讨论】:

  • 我试过了,但是结果太多而且不规则。谢谢
  • 进行组合
  • 应该只返回3个嵌套项(如上图)?
  • 是的,谢谢你的回答
  • 哪一部分结合哪一部分有什么逻辑吗?无法从输入和输出推导出逻辑。

标签: php arrays combinations


【解决方案1】:

希望你喜欢这个。因此,您需要检查条件是哪个索引数组连接并且该索引不检查以推送值

  $my_Arr = array( 

         array(1,2),
         array(1,3),
         array(1,4),
         array(2,3),
         array(2,4),
         array(3,4)
     );

echo "<pre>";
print_r($my_Arr);

echo "     -------------------------          <br> ";

  $elements  = sizeof($my_Arr);
  $first_num = '';
  $second_num = '';
  for ($i=0; $i < $elements; $i++) { 
      $subelements = sizeof($my_Arr[$i]);
      if($subelements < 4){
         for ($j=0; $j < $subelements ; $j++) { 

         if($j == 0 ){
               $first_num =$my_Arr[$i][$j];

         }

         if($j == 1 ){
             $second_num =$my_Arr[$i][$j];

         }

          if($first_num !=null && $second_num != null){

                for ($k=0; $k < $elements; $k++) { 
            for ($l=0; $l < $subelements ; $l++) { 
                if($first_num == $my_Arr[$k][$l] && $second_num!=$my_Arr[$k][$l+1]){

                    if (!in_array($my_Arr[$k][$l+1],$my_Arr[$i])) {
                        array_push($my_Arr[$i], $my_Arr[$k][$l+1]);
                    }

                   }
               }


              }

             }


          } 
       }

   }

echo "<pre>";
print_r($my_Arr);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 2013-08-28
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    相关资源
    最近更新 更多