Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在具有相同键的不同数组中输出值_Php_Arrays - Fatal编程技术网

Php 在具有相同键的不同数组中输出值

Php 在具有相同键的不同数组中输出值,php,arrays,Php,Arrays,假设我有n个这样的数组: $array1 = array('a', 'b', 'c', 'd'); $array2 = array(1, 2, 3, 4); $array3 = array('w', 'x', 'y', 'z'); 我想在键相同的地方回显它们的值,即 A。。。b2x。。。等 我有办法做到这一点,但目前我必须手动输入新数组的长度,如下所示- $i=0; while($i<n) { $arraylist[] = array($array1[$i], $array2[$

假设我有n个这样的数组:

$array1 = array('a', 'b', 'c', 'd');
$array2 = array(1, 2, 3, 4);
$array3 = array('w', 'x', 'y', 'z');
我想在键相同的地方回显它们的值,即

A。。。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++;
}
$i=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);

编辑:快速解释

  • 函数接受1..n个数组
  • 计算传递了多少个数组以及哪个数组的键最多
  • 从0循环到最大数组的大小
  • 从0循环到传递的数组数
  • 打印出他们的索引
若所有数组的大小都相同,那个么我们可以使用任意数组的大小

$i=0;
while($i<sizeof($array1))
{
echo $array1[$i].$array2[$i].$array3[$i];
echo "...";
$i++;
}

you can print your pattern using this way.
$i=0;
而($i
$array1=数组('a','b','c','d');
$array2=数组(1,2,3,4,5);
$array3=数组('w','x','y','z');
$maxArray=max(sizeof($array1)、sizeof($array2)、sizeof($array3));
$i=0;

虽然($i)在这方面需要小心;如果
$array1
不是最大的数组,您将无法捕获所有密钥。我在这里提到,如果所有数组的大小相同,那么我们可以使用它。
$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.
$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++;
}