0

我有两个数组:

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

4 回答 4

3

这是一个单行:

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

于 2013-05-12T11:20:45.200 回答
2

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

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

作为

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

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

$arr = $arr + $arr2; // appending
于 2013-05-12T11:14:11.643 回答
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));
于 2013-05-12T11:22:46.040 回答
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);
?> 
于 2015-12-03T23:49:54.633 回答