簡體   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