基于点字段合并两个数组,因为用户有两个ID

时间:2014-05-27 07:59:47

标签: php mysql arrays

奖励计划。 业务在程序中途改变了用户名,因此早期的点归属于一个用户ID(在其自己的字段中),后来的点归属于另一个用户ID(在其自己的字段中)

所以,让我们说我从数据中生成两个数组,如下所示:

$result_array1[] = array(
        'users_name'=>$users_first_name . ' ' . $users_surname,
         'rank'=>'rank', 
         'users_type'=>$users_type, 
         'users_dealer_name'=>$dealership, 
         'class'=>$class, 
         'users_sales_guild_id'=>$users_sales_guild_id,  
         'total'=>$total,
        );

$result_array2[] = array(
        'users_name'=>$users_first_name . ' ' . $users_surname,
         'rank'=>'rank', 
         'users_type'=>$users_type, 
         'users_dealer_name'=>$dealership, 
         'class'=>$class, 
         'users_sales_guild_new_id'=>$users_sales_guild_new_id,
         'total2'=>$total2,
        );

我设置的唯一键是users_sales_guild_idusers_sales_guild_new_id,以及totaltotal2

公共密钥是users_name

totaltotal2是需要汇总的分值。

如何合并数组以使最终的单个数组看起来像:

$result_array3[] = array(
        'users_name'=>$users_first_name . ' ' . $users_surname,
         'rank'=>'rank', 
         'users_type'=>$users_type, 
         'users_dealer_name'=>$dealership, 
         'class'=>$class, 
         'users_sales_guild_id'=>$users_sales_guild_id,
         'users_sales_guild_new_id'=>$users_sales_guild_new_id,
         'total3'=>$total3,
        );

...其中,键total3是键totaltotal2的合并值。

1 个答案:

答案 0 :(得分:0)

您可以按如下方式重建阵列:

$arr1 = array();
foreach($result_array1 as $row)
{
   $arr1[$row['users_name']] = $row;
}

$arr2 = array();
$arr3 = array();
foreach($result_array2 as $row)
{
   $arr2[$row['users_name']] = $row; // this one only if you need it somewhere else

   $row['total3'] = $arr1[$row['users_name']['total'] + $row['total2'];
   $arr3[] = array_merge($arr1[$row['users_name']], $row);
}

Ps:确保users_name非常独特!大数据集中有很多名称相同。