我想把多个数组的每一个可能匹配的项列出来,我单独写死倒是可以写出来,但如果数组是可添加的,就不知道怎么写了,比如下面再加一个数组$d,不知道我描述清楚了没有
$a=array('a','b','c');
$b=array('A','B','C');
$c=array('1','2','3');
for($i=0;$i<count($a);$i++)
{
for($j=0;$j<count($b);$j++)
{
for($z=0;$z<count($c);$z++)
{
echo "{$a[$i]}-{$b[$j]}-$c[$z]<br>";
}
}
}
$a=array('a','b','c');
$b=array('A','B','C');
$c=array('1','2','3');
for($i=0;$i<count($a);$i++)
{
for($j=0;$j<count($b);$j++)
{
for($z=0;$z<count($c);$z++)
{
echo "{$a[$i]}-{$b[$j]}-$c[$z]<br>";
}
}
}
a-A-1
a-A-2
a-A-3
a-B-1
a-B-2
a-B-3
a-C-1
a-C-2
a-C-3
b-A-1
b-A-2
b-A-3
b-B-1
b-B-2
b-B-3
b-C-1
b-C-2
b-C-3
c-A-1
c-A-2
c-A-3
c-B-1
c-B-2
c-B-3
c-C-1
c-C-2
c-C-3
$arr[] = array('a','b','c');
$arr[] = array('A','B','C');
$arr[] = array('1','2','3');
$arr[] = array('4','5','6');$s = $arr;
$r = $s[0];
for($i = 1,$j = count($s);$i<$j;$i++)
{
$n = array();
foreach($r as $v)
{
foreach($s[$i] as $v2)
{
$n[] = $v.'-'.$v2;
}
$r = $n;
}
}
foreach($r as $v)
{
$new[] = $v;
}
echo "<pre/>";
print_r($new);
$a[0]=array('a','b','c');
$a[1]=array('A','B','C');
$a[2]=array('1','2','3');$cmd1="";
$cmd2="";
for($i=0;$i<count($a);$i++)
{
$cmd1.='for($z['.$i.']=0;$z['.$i.']<count($a['.$i.']);$z['.$i.']++)';
$cmd2.=($cmd2?'-':'').'{$a['.$i.'][$z['.$i.']]}';
}
eval("{$cmd1} echo \"$cmd2<br>\";");
$arr[] = array('A','B','C');
$arr[] = array('1','2','3');$s = $arr;
$r = $s[0];
for($i = 1,$j = count($s);$i<$j;$i++)
{
$n = array();
foreach($r as $v)
{
foreach($s[$i] as $v2)
{
$n[] = $v.'-'.$v2;
}
$r = $n;
}
}
echo "<pre/>";
print_r($r);
感觉没什么好的办法
在使用这个的时候:
for($i=0;$i <count($a);$i++)
写成:
$temp = count($a);
for($i=0;$i <$temp;$i++)
效率应该好一点,防止每次都进行count操作