php合并两个数组的子数组,其中某个键的值相等

问题描述 投票:1回答:2

您好,谢谢您的关注

我确实有两个数组

  1. [A]-从server1上一个数据库的mysql查询中,$ postings_array-讨论线程的所有帖子的选择(基于线程的ID)
  2. [[B]-从mysql查询server2上另一个数据库的查询-$ usersdata_array-讨论线程的所有帖子的选择(基于线程的ID)

这意味着:

  • [[A]中有很多发布子数组[B]中一个或多个userdata-sub-arrays。
  • 两个数组总是在每个数组中都包含一个名为usrsID的键子数组。
I need to extend the Sub-Arrays in $postings_array [A]

by merging them 

with the Sub-Arrays of the $usersdata_array [B]

based on WHERE the VALUE of the usrsID KEY in the sub-array[A] is EQUAL to the usrsID KEY in the sub-array[B].

示例:

Array [A]:
(
    [0] => Array
        (
            [ID] => 5
            [usrsID] => 3
            [tid] => 19
            [txtid] => 22
        )
    [1] => Array
        (
            [ID] => 6
            [usrsID] => 1
            [tid] => 19
            [txtid] => 23
        )
    [2] => Array
        (
            [ID] => 7
            [usrsID] => 2
            [tid] => 19
            [txtid] => 24
        )
    [3] => Array
        (
            [ID] => 8
            [usrsID] => 1
            [tid] => 19
            [txtid] => 25
        )
)

-

Array [B]:
(
    [0] => Array
        (
            [id] => 1
            [usrsID] => 1
            [avatarID] => 1

        )
    [1] => Array
        (
            [id] => 2
            [usrsID] => 2
            [avatarID] => 3

        )
    [2] => Array
        (
            [id] => 3
            [usrsID] => 3
            [avatarID] => 22

        )

)

所需的结果(在上面的示例中,[B]的扩展名是[A]):

Array [A_extended]:
(
    [0] => Array
        (
            [ID] => 5
            [usrsID] => 3
            [tid] => 19
            [txtid] => 22
            [id] => 3
            [avatarID] => 22
        )
    [1] => Array
        (
            [ID] => 6
            [usrsID] => 1
            [tid] => 19
            [txtid] => 23
            [id] => 1
            [avatarID] => 1
        )
    [2] => Array
        (
            [ID] => 7
            [usrsID] => 2
            [tid] => 19
            [txtid] => 24
            [id] => 2
            [avatarID] => 3
        )
    [3] => Array
        (
            [ID] => 8
            [usrsID] => 1
            [tid] => 19
            [txtid] => 25
            [id] => 1
            [avatarID] => 1
        )
)

...我认为,这是一个普遍的问题,因此应该有一个最佳实践(可能是一个内置的php函数或其中两个或三个的组合)-而且我不必重新发明轮子。至少,我希望如此...

否则,我的方法是

  1. 检查迭代次数(=在$ usersdata_array [B]中找到的子数组)] >>
  2. 迭代outerHaystack并在innerHaystack中发现$ needle时触发一个函数
  3. 通过checkSubArrayfunc执行合并

方法,hayStackArray = complete [A] Array;针= [B]子数组的$ usrsID值:

function checkSubArrayfunc($hayStackSubArray, $needle, $toMergeSubArray) {

        if (in_array(array('$hayStackSubArray'), $needle)) {
                array_merge_recursive($hayStackSubArray, $toMergeSubArray);
        }
    }

您好,感谢您的关注,我的确有两个数组:[A]-从server1上一个数据库的mysql查询中-$ postings_array-讨论线程的所有帖子的SELECT(基于...) >

php arrays array-merge
2个回答
0
投票

首先,将一个空数组用作存储标记数组。然后遍历两个数组。如果userID

在两个元素数组中都相同,则对这些数组进行修饰并推入margeArr

0
投票

尝试一下:

© www.soinside.com 2019 - 2024. All rights reserved.