让我们考虑以下数组:
$dataArray = array(
'A' => array(
'A1',
'A2',
),
'B' => array(
'B1',
'B2',
'B3',
),
'C' => array(
'C1',
'C2',
'C3',
)
);
我可以按照获得以下输出的最快和最佳性能循环:
A1 B1 C1
A1 B1 C2
A1 B1 C3
A1 B2 C1
A1 B2 C2
A1 B2 C3
A1 B3 C1
A1 B3 C2
A1 B3 C3
A2 B1 C1
A2 B1 C2
A2 B1 C3
....
An Bn Cn
请注意,子阵列的数量是动态的,长度相同。
一旦我按照给定的输出到达每一行,我将需要在迭代内部进行处理。
这是我到现在为止所尝试的,但它并没有在循环开始时给出正确的结果:
foreach($dataArray as $k => $vals1){
foreach($vals1 as $k1 => $val1){
$currentVars[$k] = $val1;
foreach($dataArray as $k2 => $vals2){
foreach($vals2 as $val2){
if($k == $k2) break;
$currentVars[$k2] = $val2;
echo implode(" ", $currentVars).chr(10);
}
unset($dataArray[$k]);
}
}
}
输出:
A1 B1
A1 B2
A1 B3
A1 B3 C1
A1 B3 C2
A1 B3 C3
A2 B1 C3
A2 B2 C3
A2 B3 C3
A2 B3 C1
A2 B3 C2
A2 B3 C3
A2 B1 C1
A2 B1 C2
A2 B1 C3
A2 B2 C1
A2 B2 C2
A2 B2 C3
A2 B3 C1
A2 B3 C2
A2 B3 C3