在JSON的值上组合多维数组

时间:2014-05-23 19:40:38

标签: php arrays json

我有2个加载JSON数据的api端点... 1.主题专家

阵 (     [0] =>排列         (             [ExpertiseId] => 1             [IndustryId] => 1             [PersonId] => 3         ) ... )

  1. 人员数据库 排列 ( [0] =>排列     (         [Id] => 1         [姓名] =>乔         [办公室] =>纽约     ) .... )
  2. 我想将两个函数都传递给数组,指定合并到[matter.PersonId] => [people.Id]所以返回的数组将成为

    阵 (     [0] =>排列         (             [ExpertiseId] => 1             [IndustryId] => 1             [PersonId] => 3             [Id] => 1             [姓名] =>乔             [办公室] =>纽约         ) ... )

2 个答案:

答案 0 :(得分:0)

您必须迭代两个数组并以可能发生合并的方式重新组织数据。在实践中,这意味着通过PersonId重新调整第一个数组,并通过Id重新调整第二个数组;使用array_column非常容易:

$matter = array_column($matter, null, 'PersonId');
$people = array_column($people, null, 'Id');

此时只剩下一个简单的任务:合并$matter$people中共享相同密钥的项目(数组)。

在一个完美的世界中,它将是一个带有array_merge_recursive的单行,但该函数实际上并不合并具有这些整数键的数组(我们用作键的id是整数)。因此,按顺序进行一些标准迭代:选择一个数组并将其内容与另一个数据合并:

foreach ($people as $id => $data) {
    // If there's a guarantee that both arrays will definitely have the same
    // set of keys (ids) so that $matter[$id] is guaranteed to exist,
    // you can also use the simpler: $matter[$id] += $data 
    $matter[$id] = isset($matter[id]) ? $matter[$id] + $data : $data;
}

...现在$matter将所有数据合并在一起。

答案 1 :(得分:-1)

尝试使用array_merge()

$ newArray = array_merge(first_array,second_array);