将两个简单数组合并为多维数组

时间:2015-01-22 10:40:36

标签: php arrays codeigniter

我正在尝试将两个数组合并在一起,但我无法弄清楚如何。

第一阵列:

Array
(
    [0] => a
    [1] => b
    [2] => c
)

第二阵列:

Array
(
    [0] => 1
    [1] => 1
)

我想要实现的目标:

Array
(
    [0] => Array
        (
            [0] => a
            [1] => 1
        )

    [1] => Array
        (
            [0] => b
            [1] => 1
        )

    [2] => Array
        (
            [0] => c
        )
)

我知道这很容易实现,但我的大脑拒绝合作。也许我需要更多的咖啡......

//感谢所有的downvotes:)

4 个答案:

答案 0 :(得分:2)

简单foreach迭代:

$a = array('a', 'b', 'c');
$b = array(1, 1);

$result = array();

foreach($a as $key => $value) {
    $tmp = array($value);
    if (isset($b[$key])) {
        $tmp[] = $b[$key];
    }
    $result[] = $tmp;
}

print_r($result);

结果:

Array
(
    [0] => Array
        (
            [0] => a
            [1] => 1
        )

    [1] => Array
        (
            [0] => b
            [1] => 1
        )

    [2] => Array
        (
            [0] => c
        )

)

答案 1 :(得分:2)

这被称为“压缩”,当第一个参数为null时,可以使用array_map在php中完成:

$x = ['a', 'b', 'c'];
$y = [1, 2];

$z = array_map(null, $x, $y);
print_r($z);

结果:

Array
(
    [0] => Array
        (
            [0] => a
            [1] => 1
        )

    [1] => Array
        (
            [0] => b
            [1] => 2
        )

    [2] => Array
        (
            [0] => c
            [1] => 
        )

)

答案 2 :(得分:0)

也许不是最好的方法,但它应该适用于这种情况:

$newArray = array();
foreach ($array1 as $index => $row) {
    $newArray[$index] = array($row);
    if (isset($array2[$index])) {
        $newArray[$index][] = $array2[$index];
    }
}

答案 3 :(得分:0)

//1st Array:
$array_1 = array( 0=>'a',1=>'b',2=>'c');

//2nd Array:
$array_2 = array( 0=>1,1=>1);

//Result:
$holder = array();


for($i =0 ; $i <= max(count($array_1),count($array_2)); $i++){
    if(isset($array_1[$i])){
        $holder[$i][] = $array_1[$i];
    }

    if(isset($array_2[$i])){
        $holder[$i][] = $array_2[$i];
    }
}

//Required Result:
print_r($holder);

希望这有助于......; p