更新:我找到了解决方案here
我有3个阵列:
$a = array( 'a1', 'a2' );
$b = array( 'b1', 'b2' );
$c = array( 'c1', 'c2' );
每个数组都有2个值,所以我想通过从每个数组中选择值来创建一个不同的数组。有8种(2 * 2 * 2 = 8)种可能的组合:
$new1 = array( 'a1', 'b1', 'c1' );
$new2 = array( 'a2', 'b1', 'c1' );
$new3 = array( 'a1', 'b2', 'c1' );
$new4 = array( 'a2', 'b2', 'c1' );
$new5 = array( 'a1', 'b1', 'c2' );
$new6 = array( 'a2', 'b1', 'c2' );
$new5 = array( 'a1', 'b1', 'c2' );
$new6 = array( 'a2', 'b1', 'c2' );
$new7 = array( 'a1', 'b2', 'c2' );
$new8 = array( 'a2', 'b2', 'c2' );
我试过这段代码,但似乎完全错了。
$a = array( 'a1', 'a2' );
$b = array( 'b1', 'b2' );
$c = array( 'c1', 'c2' );
$count = max(count($a), count($b), count($c));
$bim = array();
for($i=0; $i < $count; $i++) {
if (isset($a[$i])) $bim[] = $a[$i];
if (isset($b[$i])) $bim[] = $b[$i];
if (isset($c[$i])) $bim[] = $c[$i];
}
$max = count($a) * count($b) * count($c);
for($i=0; $i < $max; $i++)
{
$html[$i] = bimbim( $bim );
$newarr = array_shift($bim);
$bim = array_merge( $bim, array($newarr) );
}
function bimbim( $bim )
{
foreach( $bim as $k => $v )
{
$cnt++;
if ( $cnt <= 3 )
{
$html .= $v . ",";
}
}
return rtrim($html, ",");
}
print_r( $html );
此代码只有6个真正的组合;最后2个组合是重复的。
事先感谢朋友们:)