如何在php数组合并中模拟左联接?

时间:2019-09-12 14:57:06

标签: php arrays

我想在php中模拟2个数组的内部联接。

我该怎么做?

我有这些数组:

$parents = [
    0 => ['parent_id' => 1, 'data1'],
    1 => ['parent_id' => 2, 'data2'],
    2 => ['parent_id' => 3, 'data3'],
];

$children = [
    1 => [
        ['parent_id' => 1, 'children 1'],
        ['parent_id' => 1, 'children 2'],
        ['parent_id' => 1, 'children 3'],
    ],
    2 =>[
      ['parent_id' => 2, 'children 11'],
      ['parent_id' => 2, 'children 22'],
      ['parent_id' => 2, 'children 33'],
    ]
];

结果应该是:

$result = [
    0 => ['parent_id' => 1, 'data1', 'children 1'],
    1 => ['parent_id' => 1, 'data1', 'children 2'],
    2 => ['parent_id' => 1, 'data1', 'children 3'],
    3 => ['parent_id' => 2, 'data2', 'children 11'],
    4 => ['parent_id' => 2, 'data2', 'children 22'],
    5 => ['parent_id' => 2, 'data2', 'children 33'],
    6 => ['parent_id' => 3, 'data3'],
];

我尝试了以下代码:

$result = [];

foreach ($parents as $id => $parent) {
if (!isset($children[$id])) {
    $result[] = $parent;
    continue;
}
foreach ($children[$id] as $child) {
    $result[] = array_merge($parent, $child);
}
}

print_r($result);

但是我希望有更好的方法来做到这一点。 有没有这样做的php函数?

谢谢!

0 个答案:

没有答案