Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:组合数组_Php_Arrays - Fatal编程技术网

PHP:组合数组

PHP:组合数组,php,arrays,Php,Arrays,这两个数组来自两个单独的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),

这两个数组来自两个单独的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\u merge
array\u merge\u recursive
但是它是附加到数组而不是合并它。谢谢


另外,我还想组合其他阵列,但这是一般的想法。

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

$result = array();

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

var_dump($result);

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

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\u map
array\u merge
将它们组合成一个新数组:

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

这种方法的优点是,由于这两个函数的参数数量可变,因此可以任意组合数组。

在使用PHP之前,SQL是否可以组合到一个查询中?遗憾的是,它无法组合:(我已经尝试过这种方法,因为需要从主SQL语句中获取更多的其他数据。我有一条主SQL语句提取不同的ID,在我的while循环中,我需要ID查询到其他表以获取其他数据/计数。因此,需要将结果合并到一个数组中。因为数组中有umeric keys.faster解决方案:$a3=array\u map('array\u merge',$a2,$a1);