使用array_combine的foreach循环

时间:2015-06-06 14:14:34

标签: php arrays foreach

我已经使用array_combine将for循环更改为foreach循环,以便在此foreach中使用两个数组。

不幸的是,看起来array_combine只会得到唯一的值,但我需要组合值组的所有部分,如:

示例:

$number = array (1,2,3,4,5,6);   
//$array = array ('a','a','b','c','d','e');   

 $array2=   array ( 
            array ('a','a','b','c','d','e'),
            array ('a','a','b','c','d','e')
                 );     

foreach (array_combine($array[0], $number) as $array2 => $number2)  {

    echo $number2 . $array2 . "<br>";
}

期望的输出

1a  (this result is missing)
2a
3b
4c
5d
6e

编辑: 我的一个$数组应该是一个二维数组

2 个答案:

答案 0 :(得分:1)

这是因为您使用$array作为组合数组的键,并且每个键必须是唯一的,因此具有相同键的最后一个键将在您的数组中。其他的将被删除(Simple example to reproduce)。

要解决您的问题,您可以使用array_map()并将两个数组作为参数传递以循环遍历它们:

array_map(function($v1, $v2){
    echo $v1 . $v2 . "<br>";
}, $number, $array);

输出:

1a
2a
3b
4c
5d
6e

Demo

答案 1 :(得分:1)

您无法复制数组中的键,但如果您正在运行PHP&gt;您可以使用Generators模拟重复键。 5.5.0

$number = array (1,2,3,4,5,6);   
$array = array ('a','a','b','c','d','e');   

function myCombinedArray($keys, $values) {
    foreach($values as $index => $value) {
        yield $keys[$index] => $value;
    }
}

foreach (myCombinedArray($array, $number) as $array2 => $number2)  {

    echo $number2 . $array2 . "<br>";
}