PHP可能有限的数组组合

时间:2015-05-28 09:33:39

标签: php arrays

这里我使用了以下函数来获取给定数组的可能组合。

    function combination($array, $str = '') 
{
   $current = array_shift($array);
   if(count($array) > 0) {
       foreach($current as $element) 
       {

           combination($array, $str.$element);

       }
   }
   else
   {
       foreach($current as $element) 
       {
         echo '<br>'.$str.$element;

       }
   } 
}

$array = array(
                array( ' A1', ' A2', ' A3', ' A4'),
                array(' B1', ' B2', ' B3', ' B4'),
                array(' C1',' C2'));



combination($array);    

    OUTPUT:
A1 B1 C1
A1 B1 C2
A1 B2 C1
A1 B2 C2
A1 B3 C1
A1 B3 C2
A1 B4 C1
A1 B4 C2
A2 B1 C1
A2 B1 C2
A2 B2 C1
A2 B2 C2
A2 B3 C1
A2 B3 C2
A2 B4 C1
A2 B4 C2
A3 B1 C1
A3 B1 C2
A3 B2 C1


EXPECTED: In this i want only to display first 10 combinations.

这里我得到了给定数组的所有可能组合。但我想只显示可能数组的前10个组合。请帮助我克服这个问题。

1 个答案:

答案 0 :(得分:0)

这是您的最佳和最佳解决方案。试试吧: -

<?php
global $i;
$i = 1; // define a global variable with value 1
function combination($array, $str = '') 
{
  global $i;
  $current = array_shift($array);
   if(count($array) > 0 && $i <=10) { // check that value is less or equal to 10 if yes then execute otherwise exit

       foreach($current as $element) 
       { 
           combination($array, $str.$element);
       }
   }
   if(count($array) <= 0 && $i <=10){ //again check if value is less or equal to 10 then execute otherwise exit 

       foreach($current as $element) 
       {        
            echo '<br>'.$str.$element;
            $i++; // increase the  value of global variable while iteration.
       }

   }
}


$array = array(array(' A1', ' A2', ' A3', ' A4'),array(' B1', ' B2', ' B3', ' B4'),array(' C1',' C2'));
combination($array);
?>

输出: - http://prntscr.com/7abrrx

注意: - 请检查并告知有效吗?