合并两个关联数组,并按第一级关键字分组


Merge two associative arrays and group by first level key

$array1:-

Array
(
    [Test Stock] => Array
        (
            [intStockCount] => 10
        )
    [CARTON 50 X 50 X 50] => Array
        (
            [intStockCount] => 10
        )
)

$array2:-

Array
(
    [Test Stock] => Array
        (
            [intInvoiceCount] => 20
        )
    [CARTON 50 X 50 X 50] => Array
        (
            [intInvoiceCount] => 30
        )
)

我需要一个新的阵列组合在一起,而不使用环路

Array
(
    [Test Stock] => Array
        (
            [intStockCount] => 10
            [intInvoiceCount] => 20
        )
    [CARTON 50 X 50 X 50] => Array
        (
            [intStockCount] => 10
            [intInvoiceCount] => 30
        )
)

您可以使用array_merge_recursive来完成此工作。

数组合并_草书

array_marge_recurive((将一个或多个数组的元素合并在一起,以便将其中一个的值附加到前一个的末尾。它返回生成的数组。

如果输入数组具有相同的字符串键,那么这些键的值将合并到一个数组中,并且这是递归完成的,因此,如果其中一个值本身是数组,函数也会将其与另一个数组的相应条目合并。但是,如果数组具有相同的数字键,则后面的值不会覆盖原始值,而是被追加。

只需:

<?php
$array1 = array(
    "Test Stock" => array(
        "intStockCount" => 10
    ),
    "CARTON 50 X 50 X 50" =>  array(
        "intStockCount" => 10
    )
);
$array2 = array(
    "Test Stock" => array(
        "intInvoiceCount" => 20
    ),
    "CARTON 50 X 50 X 50" =>  array(
        "intInvoiceCount" => 30
    )
);
$final = array_merge_recursive($array1,$array2);
echo '<pre>';
print_r($final);
echo '</pre>';
/* OUTPUT
Array
(
    [Test Stock] => Array
        (
            [intStockCount] => 10
            [intInvoiceCount] => 20
        )
    [CARTON 50 X 50 X 50] => Array
        (
            [intStockCount] => 10
            [intInvoiceCount] => 30
        )
)
*/

这里需要注意的一点是,您在两个arrays中都使用了相同的字符串key。正如PHP文档所说的

。。。这些键的值被合并到一个数组中

  $array1 = array(
    'Test Stock' => array(
        'intStockCount' => 10,
    ),
    'CARTON 50 X 50 X 50' => array(
        'intStockCount' => 10
    )
    );
    $array2 = array(
    'Test Stock' => array(
        'intStockCount' => 10,
    ),
    'CARTON 50 X 50 X 50' => array(
        'intStockCount' => 10
    )
    );
    $result = array_merge_recursive($array1, $array1);
    var_dump($result);

你必须改变你的数组结构。

对于普通阵列合并:

$result = array_merge($array1, $array2);

http://php.net/manual/en/function.array-merge.php