我们说我有n个数组:
$array1 = array('a', 'b', 'c', 'd');
$array2 = array(1, 2, 3, 4);
$array3 = array('w', 'x', 'y', 'z');
我希望在密钥相同的情况下回显它们的值,即
a1w ... b2x ......等
我有办法做到这一点,但目前我必须手动输入新数组的长度,如下所示 -
$i=0;
while($i<n) {
$arraylist[] = array($array1[$i], $array2[$i], $array3[$i], ...$arrayn[$i])
$i++;
}
$i=0;
foreach($arraylist as $s) {
$b=0;
foreach($s as $a) {
echo $s[$b];
$b++;
}
echo " ... ";
$i++;
}
有没有办法在不必手动设置n的长度(数组的数量)的情况下执行此操作。此外,有没有办法使这个过程更容易/更有效?
答案 0 :(得分:1)
$array1 = array('a', 'b', 'c', 'd');
$array2 = array(1, 2, 3, 4 , 5);
$array3 = array('w', 'x', 'y', 'z');
$maxArray = max(sizeof($array1),sizeof($array2),sizeof($array3));
$i=0;
while($i<$maxArray)
{
if(!empty($array1[$i])){ echo $array1[$i];}
if(!empty($array2[$i])){ echo $array2[$i];}
if(!empty($array3[$i])){ echo $array3[$i];}
echo "...";
$i++;
}
这适用于任何大小的数组,以捕获显示预期模式的所有键。
答案 1 :(得分:0)
这就是你要追求的吗?
$array1 = array('a', 'b', 'c', 'd', 'e', 'f');
$array2 = array(1, 2, 3);
$array3 = array('w', 'x','y', 'z');
function printByIndex(...$arrays) {
$amount = count($arrays);
$biggest = count(max($arrays));
for ($i = 0; $i < $biggest; ++$i) {
for ($j = 0; $j < $amount; ++$j) {
echo isset($arrays[$j][$i]) ? $arrays[$j][$i] : '';
}
echo PHP_EOL;
}
}
printByIndex($array1, $array2, $array3);
<强>输出:强>
a1w
b2x
c3y
dz
e
f
修改:快速解释;
答案 2 :(得分:0)
$array1 = array('a', 'b', 'c', 'd');
$array2 = array(1, 2, 3, 4);
$array3 = array('w', 'x', 'y', 'z');
如果所有数组都具有相同的大小,那么我们可以使用任何数组的大小。
$i=0;
while($i<sizeof($array1))
{
echo $array1[$i].$array2[$i].$array3[$i];
echo "...";
$i++;
}
you can print your pattern using this way.