Php 两个数组如何在单个foreach循环中扩展?

Php 两个数组如何在单个foreach循环中扩展?,php,arrays,Php,Arrays,我想在单个foreach循环中扩展两个数组,如 $array=array(1,2,3,4,5,6,7,); $array2=array(1=>'b','2=>c',3=>'d',4=>'e',5=>'f',6=>'g',7=>'x'); foreach($array as first && $aaray2 as second){ echo first; echo second; } 可能吗? 如何调用每个数组的索引和每

我想在单个foreach循环中扩展两个数组,如

$array=array(1,2,3,4,5,6,7,);
$array2=array(1=>'b','2=>c',3=>'d',4=>'e',5=>'f',6=>'g',7=>'x');

foreach($array as first && $aaray2 as second){
  echo first;
  echo second;    
}
可能吗?
如何调用每个数组的索引和每个数组的值由于您的数组不使用命名键,所以可以重用数组键。如果使用命名键,则仅当键相同时才有效

foreach ($array as $key => $value) {
    echo $value;
    echo $array2[$key];
}

您还可以使用for循环从0计数到数组长度,因为如果您不指定任何数字,php会自动使用数字作为键,但上述解决方案可能更具可读性,并且将使用命名键。

由于您的数组不使用命名键,您可以重用数组键。如果使用命名键,则仅当键相同时才有效

foreach ($array as $key => $value) {
    echo $value;
    echo $array2[$key];
}
您还可以使用for循环从0计数到数组长度,因为如果您不指定任何数字,php会自动使用数字作为键,但上述解决方案可能更具可读性,并且可以使用命名键。

您可以使用创建一个包含键=>值对的数组

foreach(array_combine($array, $array2) as $key => $value){

    echo $key;
    echo $value;

}
array\u combine返回组合的数组,如果每个数组的元素数不相等,则返回FALSE

可以使用键=>值对创建一个数组

foreach(array_combine($array, $array2) as $key => $value){

    echo $key;
    echo $value;

}

array\u combine返回合并后的数组,如果每个数组的元素数不相等,则返回FALSE

$array=array(1,2,3,4,5,6,7,);
$array2=array('b','c','d','e','f','g','x');

$array = array_merge($array, $array2);

foreach ($array as $value) {
    echo $value;
}

只需合并两个数组并执行循环

$array=array(1,2,3,4,5,6,7,);
$array2=array('b','c','d','e','f','g','x');

$array = array_merge($array, $array2);

foreach ($array as $value) {
    echo $value;
}

可以使用两个for循环,如下所示:

foreach($array as $arr) {
        echo $arr;
        for($i=1; $i<count($array2); $i++){
            echo $array2[$i];
        }
}

可以使用两个for循环,如下所示:

foreach($array as $arr) {
        echo $arr;
        for($i=1; $i<count($array2); $i++){
            echo $array2[$i];
        }
}
前几天,我写了一个ZipIterator类,就是为了实现这一点而设计的

用法示例:

特点:

适用于所有类型的,而不仅仅是阵列 可以处理任意数量的可遍历对象,但不一定是两个 对可遍历项中包含的值没有任何限制 可以配置为在shortes可遍历序列结束默认行为时停止,或者继续运行,直到所有序列都已用尽 要求:

PHP5.4或更高版本 前几天,我写了一个ZipIterator类,就是为了实现这一点而设计的

$array=array(1,2,3,4,5,6,7,);
$array2=array('b','c','d','e','f','g','x');

$mi = new MultipleIterator(
    MultipleIterator::MIT_NEED_ALL | MultipleIterator::MIT_KEYS_ASSOC
);
$mi->attachIterator(new ArrayIterator($array), 'val');
$mi->attachIterator(new ArrayIterator($array2), 'val2');
foreach($mi as $details) {
    echo $details['val'], ' - ', $details['val2'], PHP_EOL;
}
用法示例:

特点:

适用于所有类型的,而不仅仅是阵列 可以处理任意数量的可遍历对象,但不一定是两个 对可遍历项中包含的值没有任何限制 可以配置为在shortes可遍历序列结束默认行为时停止,或者继续运行,直到所有序列都已用尽 要求:

PHP5.4或更高版本 从GitHub抓取

$array=array(1,2,3,4,5,6,7,);
$array2=array('b','c','d','e','f','g','x');

$mi = new MultipleIterator(
    MultipleIterator::MIT_NEED_ALL | MultipleIterator::MIT_KEYS_ASSOC
);
$mi->attachIterator(new ArrayIterator($array), 'val');
$mi->attachIterator(new ArrayIterator($array2), 'val2');
foreach($mi as $details) {
    echo $details['val'], ' - ', $details['val2'], PHP_EOL;
}

或仅适用于PHP5.5+

$array=array(1,2,3,4,5,6,7,);
$array2=array('b','c','d','e','f','g','x');

$mi = new MultipleIterator(
    MultipleIterator::MIT_NEED_ALL | MultipleIterator::MIT_KEYS_ASSOC
);
$mi->attachIterator(new ArrayIterator($array));
$mi->attachIterator(new ArrayIterator($array2));
foreach($mi as list($val, $val2)) {
    echo $val, ' - ', $val2, PHP_EOL;
}

或仅适用于PHP5.5+

$array=array(1,2,3,4,5,6,7,);
$array2=array('b','c','d','e','f','g','x');

$mi = new MultipleIterator(
    MultipleIterator::MIT_NEED_ALL | MultipleIterator::MIT_KEYS_ASSOC
);
$mi->attachIterator(new ArrayIterator($array));
$mi->attachIterator(new ArrayIterator($array2));
foreach($mi as list($val, $val2)) {
    echo $val, ' - ', $val2, PHP_EOL;
}

延伸你的意思是在两个数组中都添加更多的项吗?我想这里你需要的是?你所说的扩展是什么意思?你在寻找2D迭代还是什么?你想要的输出是什么?扩展?你的意思是在两个数组中都添加更多的项吗?我想这里你需要的是?你所说的扩展是什么意思?你在寻找2D迭代还是什么?你想要的输出是什么?如果$array2的元素比$array1多会怎么样?@Fluffeh:考虑到他的例子使用了相同数量的值,我认为情况并非如此。当然,您可以使用isset$array2[$key]扩展解决方案来检查目标键是否存在,并相应地采取行动。这是一个很好且巧妙的答案,我并不是想对其进行攻击,只是认为可能需要指出它+不管怎么说,我的1:如果$array2的元素比$array1多,会发生什么情况?@Fluffeh:鉴于他的示例使用了相同数量的值,我假设情况并非如此。当然,您可以使用isset$array2[$key]扩展解决方案来检查目标键是否存在,并相应地采取行动。这是一个很好且巧妙的答案,我并不是想对其进行攻击,只是认为可能需要指出它+1从我这里:他想成对地打印。他想成对地打印。除了相等的数字限制,这只在$array中的所有元素都是字符串或整数时才有效。它不适用于对象之类的对象,它还将更改浮点的类型-这可能很重要。除了相等数量的限制外,这仅在$array中的所有元素都是字符串或整数时才有效。它将不适用于对象等,它还将更改浮动的类型-这可能很重要。