输出具有相同键

时间:2017-08-04 13:41:03

标签: php arrays

我们说我有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的长度(数组的数量)的情况下执行此操作。此外,有没有办法使这个过程更容易/更有效?

3 个答案:

答案 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

Sandbox Link

修改:快速解释;

  • 功能包含1..n数组。
  • 计算传递的数组数以及哪个数组的键数最多。
  • 从0循环到最大数组的大小
  • 从0循环到传递的数组
  • 打印出他们的索引。

答案 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.