繁体   English   中英

PHP添加一维数组到二维数组

[英]php adding 1d array to 2d array

我有两个数组:

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;
}

这是一个单线纸:

$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基础的解决方案。 而且我相信它会更好(并且毫无疑问会消耗更少的内存)

为什么不使用Array_Merge 特别是对于此类任务,合并多个数组。 但是你需要存储

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

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

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

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

试试这个功能:

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));

这很好

<?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);
?> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM