这里我使用了以下函数来获取给定数组的可能组合。
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)
这是您的最佳和最佳解决方案。试试吧: -
<?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
注意: - 请检查并告知有效吗?