php将1d数组添加到2d数组

时间:2013-05-12 11:06:12

标签: php arrays merge

我有两个数组:

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

=====

Array 2
(
    [0]  => Array
        (
            [Mobile]  => 978504282398
            [Name]  => Mike 
        )
    [1] => Array
        (
            [Mobile]  => 976504282300
            [Name]  => Jhon
        )
) 

====

我想合并它们,最终结果应该是:

===

Array3
(
    [0] => Array
        (
            [Mobile]  => 978504282398
            [Name]  => Mike 
        )

    [1] => Array
        (
            [Mobile]  => 976504282300
            [Name]  => Jhon
        )

    [2] => Array
        (
            [Mobile]  => 976504282322

        )

   [3] => Array
        (
            [Mobile]  => 976504282322

        )


)

注意:性能在这里非常重要,因为每个数组都有超过200,000项,所以使用for循环不是一个好主意。

我的代码:

foreach ($Array1 as $mobile=> $value) {
    $Array2[]['Mobile']=$value;
}

4 个答案:

答案 0 :(得分:3)

这是一个oneliner:

$a = array(1,2,3);

$b = array(array('Mobile' => 1, 'name' => 'Mike'));

var_dump(
    array_merge($b, array_map(function($i) { return array('Mobile' => $i); }, $a))
);

PS:即使你没有明确地看到一个循环 - php在内部执行它。

PPS:我个人会创建一个性能测试来比较一个简单的for基础解决方案。而且我相信它会更好(并且会毫无疑问地消耗更少的内存)

答案 1 :(得分:2)

为什么不Array_Merge?特别是对于这样的任务,合并多个数组。 但是你需要存储

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

作为

Array 1
(
    [0] => array('Mobile'=>976504282322)
    [1] => array('Mobile'=>976530000022)
)

然后你就可以合并了。 anywawys应该比循环200k数组更快。 如果您不关心数组索引,也可以尝试

$arr = $arr + $arr2; // appending

答案 2 :(得分:1)

尝试此功能:

function my_array_merge() {
    $new = array();
    foreach (func_get_args() as $arr) {
        foreach ($arr as $item) {
            if (!is_array($item)) {
                $item = array('Mobile' => $item);
            }
            $new[] = $item;
        }
    }
    return $new;
}

示例:

$arr1 = array(
    '976504282322',
    '976530000022',
);
$arr2 = array(
    array(
        'Mobile' => '978504282398',
        'Name'   => 'Mike',
    ),
    array(
        'Mobile' => '976504282300',
        'Name'   => 'John',
    ),
);
print_r(my_array_merge($arr2,$arr1));

答案 3 :(得分:0)

这很好用

<?php
$array = array("a" , "b", "c" ,"d");
$array1 = array(1 , 2, 3 ,4);
$sum=array();
for($i=0;$i<count($array);$i++)
{
$sum[$i][1]=$array[$i];
$sum[$i][2]=$array1[$i];
}
echo '<pre>';
print_r($sum);
?>