PHP:组合数组

时间:2016-02-23 16:55:36

标签: php arrays

我有两个来自2个单独的SQL语句的数组。

第一阵列:

$a1 = array(
    array('referral_count' => 213),
    array('referral_count' => 88),
    array('referral_count' => 35)
);

第二阵列:

$a2 = array(
    array('ocean_company_id' => 524, 'customer_company_id' => 522),
    array('ocean_company_id' => 527, 'customer_company_id' => 522),
    array('ocean_company_id' => 544, 'customer_company_id' => 543)
);

现在我要做的是将两个数组组合成:

$a3 = array(
    array(
        'ocean_company_id' => 524,
        'customer_company_id' => 522,
        'referral_count' => 213),
    array(
        'ocean_company_id' => 527,
        'customer_company_id' => 522,
        'referral_count' => 88),
    array(
        'ocean_company_id' => 544,
        'customer_company_id' => 543,
        'referral_count' => 35)
);

我尝试array_mergearray_merge_recursive,但它会附加到数组而不是组合它。谢谢!

PS。我还有其他想要组合的阵列,但这是一般的想法。

2 个答案:

答案 0 :(得分:2)

您可以使用缓冲区。假设您的数组具有相同的长度。

$result = array();

foreach ($array1 as $i => $arr)
{
    $result[$i] = array_merge($arr, $array2[$i]);
}

var_dump($result);

答案 1 :(得分:1)

有很多方法可以做到这一点。这是将第一个数组中的值添加到第二个数组的一种奇怪方法。

for ($i=0; isset($a1[$i]); $a2[$i]['referral_count'] = $a1[$i]['referral_count'], $i++);

这与

基本相同
$i = 0;
while (isset($a1[$i])) {
    $a2[$i]['referral_count'] = $a1[$i]['referral_count'];
    $i++;
}

这种方法的优点是没有函数调用,也没有创建其他变量($i除外);

如果您不想更改输入数组,可以将array_maparray_merge结合使用,将它们组合成一个新数组:

$a3 = array_map('array_merge', $a2, $a1);

这种方法的优点在于,因为这两个函数都使用可变数量的参数,所以您可以根据需要组合任意数量的数组。