2015-05-28 87 views
-5

這裏我使用了下面的函數來獲得給定數組的可能組合。PHP可能有限的數組組合

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個組合。請幫我解決這個問題。

+0

什麼是預期輸出? –

+0

好的我會在我的代碼中加入 – User11

+0

請你幫我提供一個解決方案 – User11

回答

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

注: - 請檢查並告訴工作或沒有?