首页 > 解决方案 > 根据字段值合并两个数组数组

问题描述

有两个数组数组。$user 和 $experience 是两个数组,我想实现 $final 作为我的预期输出。

我有两个数组:

$user = [
  [
    "country" => "aus",
    "new_experiences" => 0,
    "new_users" => 6
  ],
  [
    "country" => "jpn",
    "new_experiences" => 0,
    "new_users" => 5
  ]
];

$experience = [
  [
    "country" => "jpn",
    "new_experiences" => 12,
    "new_users" => 0
  ],
  [
    "country" => "usa",
    "new_experiences" => 10,
    "new_users" => 0
  ]
];

根据国家/地区合并这两个数组后,我怎样才能得到:

$final = [
  [
    "country" => "aus",
    "new_experiences" => 0,
    "new_users" => 6
  ],
  [
    "country" => "jpn",
    "new_experiences" => 12,
    "new_users" => 5
  ],
  [
    "country" => "usa",
    "new_experiences" => 10,
    "new_users" => 0
  ]
];

标签: php

解决方案


您可以使用以下简单步骤实现您的目标:

  • 使用 foreach 将数组迭代并排列成单个数组
  • 创建一个键值数组,就像我创建的一样$issetArray
  • 将所有值推送到 $final 数组中,您将获得所需的输出

我使用foreach循环创建了一个简单的逻辑,isset()并且array_push()

$user = array(
  array(
    "country" => "aus",
    "new_experiences" => 0,
    "new_users" => 6
  ),
  array(
    "country" => "jpn",
    "new_experiences" => 0,
    "new_users" => 5
  )
);

$experience = array(
  array(
    "country" => "jpn",
    "new_experiences" => 12,
    "new_users" => 0
  ),
  array(
    "country" => "usa",
    "new_experiences" => 10,
    "new_users" => 0
  )
);

$final = array();
$issetArray = array();

foreach($user as $key => $value)
{
    if(isset($issetArray[$value['country']]))
    {
        $issetArray[$value['country']]['new_experiences'] = $value;
        $issetArray[$value['country']]['new_users'] = $value;
    }
    else
    {
        $issetArray[$value['country']] = $value; 
    }
}

foreach($experience as $key => $value)
{
    if(isset($issetArray[$value['country']]))
    {
        $issetArray[$value['country']]['new_experiences'] = $value['new_experiences'];
        $issetArray[$value['country']]['new_users'] = $value['new_users'];
    }
    else
    {
        $issetArray[$value['country']] = $value; 
    }
}

foreach($issetArray as $value)
{
    array_push($final, $value);
}

echo "<pre>";
print_r($final);

点击链接了解更多关于isset()array_push()


推荐阅读