搜索对象数组并返回新的对象数组

时间:2020-03-22 21:10:18

标签: php

我需要一些帮助。我一直在努力解决这个问题,但我做不到,所以我想做的是 我正在尝试与对象数组blackListUser进行比较 与contactUsers。 如果有匹配项,我想返回新用户的白名单,而没有返回名单的用户,这是最后一个预期的新数组。

for($counter = 0; $counter < count($blackListUsers); $counter++) {
    how i can check here
}


ContactUsers
Array
(
    [0] => stdClass Object
        (
            [user_id] => 2
            [full_name] => User B
            [image] => 1582735876user-a.png
        )

    [1] => stdClass Object
        (
            [user_id] => 3
            [full_name] => User C
            [image] => 1582735876user-a.png
        )

    [2] => stdClass Object
        (
            [user_id] => 4
            [full_name] => User D
            [image] => 1582735876user-a.png
        )

    [3] => stdClass Object
        (
            [user_id] => 5
            [full_name] => User E
            [image] => 1582735876user-a.png
        )

    [4] => stdClass Object
        (
            [user_id] => 6
            [full_name] => User F
            [image] => 1582735876user-a.png
        )

    [5] => stdClass Object
        (
            [user_id] => 8
            [full_name] => User G
            [image] => 1582735876user-a.png
        )

)


blackListUsers
Array
(
    [0] => stdClass Object
        (
            [user_id] => 2
            [full_name] => User B
            [image] => 1582735876user-a.png
        )

    [1] => stdClass Object
        (
            [user_id] => 3
            [full_name] => User C
            [image] => 1582735876user-a.png
        )

)

expected new array
 Array
    (
        {
                "user_id": "4",
                "name": "User D",
                "image": "1582735876user-a.png"
            },
            {
                "user_id": "5",
                "name": "User E",
                "image": "1582735876user-a.png"
            },
            {
                "user_id": "6",
                "name": "User F",
                "image": "1582735876user-a.png"
            },
            {
                "user_id": "8",
                "name": "User G",
                "image": "1582735876user-a.png"
            }

    )

1 个答案:

答案 0 :(得分:1)

launch.json

array_filteranonymous function一起使用;和in_array。 阅读<?php $user1->user_id = 2; $user1->full_name = 'User B'; $user1->image = '1582735876user-a.png'; $user2->user_id = 3; $user2->full_name = 'User C'; $user2->image = '1582735876user-a.png'; $user3->user_id = 4; $user3->full_name = 'User D'; $user3->image = '1582735876user-a.png'; $user4->user_id = 3; $user4->full_name = 'User C'; $user4->image = '1582735876user-a.png'; $users = [$user1, $user2, $user3]; $blackListedUsers = [$user4]; $res = array_filter($users, function ($user) use ($blackListedUsers) { return !in_array($user, $blackListedUsers); }); var_dump($res); 文档,看看它是否符合您的需要,因为它正在比较两个对象,因此您可以使用一个自定义函数,该函数仅在两个对象的ID相等时才进行测试。

更新

或者更适合初学者的代码版本:

in_array