使用数组映射将列值插入到数组中

时间:2017-11-28 07:58:47

标签: php

我有两个数组我想在第一个数组中添加另一个键,通过匹配键与下面的第二个数组是我拥有的数组

First Array

Array
(
    [0] => Array
        (
            [id] => 5198
            [full_name] => Afnan
            [username] => eay.d
            [is_live] => 1
            [picture] => http://d2flqmogg10inr.cloudfront.net/assets/profile_images/thumbnail1/haulysu4upload-image1499828198.jpg
        )

    [1] => Array
        (
            [id] => 5213
            [full_name] => Nouf
            [username] => noufalswailem
            [is_live] => 1
            [picture] => http://d2flqmogg10inr.cloudfront.net/assets/profile_images/thumbnail1/jlyfgi4fupload-image1502276119.jpg
        )

    [2] => Array
        (
            [id] => 5218
            [full_name] => Mohammed Bin Abdullah
            [username] => almuribadh
            [is_live] => 1
            [picture] => http://d2flqmogg10inr.cloudfront.net/assets/profile_images/thumbnail1/m3ttx0luupload-image1500789921.jpg
        )

    [3] => Array
        (
            [id] => 5225
            [full_name] => Shadin Alshobaily
            [username] => shash
            [is_live] => 1
            [picture] => http://d2flqmogg10inr.cloudfront.net/assets/profile_images/thumbnail1/srura4raupload-image1499829155.jpg
        )

    [4] => Array
        (
            [id] => 5251
            [full_name] => Razan
            [username] => ra.m
            [is_live] => 1
            [picture] => http://d2flqmogg10inr.cloudfront.net/assets/profile_images/thumbnail1/rwfieka6upload-image1499831173.jpg
        )

)

我拥有的第二个数组

Array
(
    [0] => Array
        (
            [id] => 38395
            [request_by] => 2
            [request_to] => 5198
        )

)

必填结果

Array
    (
        [0] => Array
            (
                [id] => 5198
                [full_name] => Afnan
                [username] => eay.d
                [is_live] => 1
                [request_sent] => true
                [picture] => http://d2flqmogg10inr.cloudfront.net/assets/profile_images/thumbnail1/haulysu4upload-image1499828198.jpg
            )

        [1] => Array
            (
                [id] => 5213
                [full_name] => Nouf
                [username] => noufalswailem
                [is_live] => 1
                [request_sent] => false
                [picture] => http://d2flqmogg10inr.cloudfront.net/assets/profile_images/thumbnail1/jlyfgi4fupload-image1502276119.jpg
            )

        [2] => Array
            (
                [id] => 5218
                [full_name] => Mohammed Bin Abdullah
                [username] => almuribadh
                [is_live] => 1
                [request_sent] => false
                [picture] => http://d2flqmogg10inr.cloudfront.net/assets/profile_images/thumbnail1/m3ttx0luupload-image1500789921.jpg
            )

        [3] => Array
            (
                [id] => 5225
                [full_name] => Shadin Alshobaily
                [username] => shash
                [is_live] => 1
                [request_sent] => false
                [picture] => http://d2flqmogg10inr.cloudfront.net/assets/profile_images/thumbnail1/srura4raupload-image1499829155.jpg
            )

        [4] => Array
            (
                [id] => 5251
                [full_name] => Razan
                [username] => ra.m
                [is_live] => 1
                [request_sent] => false
                [picture] => http://d2flqmogg10inr.cloudfront.net/assets/profile_images/thumbnail1/rwfieka6upload-image1499831173.jpg
            )

    )

这只是因为用户2请求向5198用户发送了好友请求,这就是为什么request_sent只对这个用户是真的,如果朋友请求没有发送则提醒将为false我想在功能中使用buitl而不是环路。

2 个答案:

答案 0 :(得分:3)

似乎很容易,可能是我不了解任务

$tmp = array_flip(array_column($arr2, 'request_to'));

foreach($arr1 as &$v) {
    $v['request_sent'] = isset($tmp[$v[id]]);
}

答案 1 :(得分:0)

没有循环的解决方案(check it online):

<?php

$users = [
    ['id' => 5198, 'full_name' => 'Afnan', 'username' => 'eay.d', 'is_live' => 1, 'picture' => 'someurl'],
    ['id' => 5213, 'full_name' => 'Nouf', 'username' => 'noufalswailem', 'is_live' => 1, 'picture' => 'someurl'],
    ['id' => 5218, 'full_name' => 'Mohammed Bin Abdullah', 'username' => 'almuribadh', 'is_live' => 1, 'picture' => 'someurl'],
    ['id' => 5225, 'full_name' => 'Shadin Alshobaily', 'username' => 'shash', 'is_live' => 1, 'picture' => 'someurl'],
    ['id' => 5251, 'full_name' => 'Razan', 'username' => 'ra.m', 'is_live' => 1, 'picture' => 'someurl'],
];

$requests = [
    ['request_by' => 2, 'request_to' => 5198],
    ['request_by' => 2, 'request_to' => 5225],
];

array_walk($users, 'setUserRequestStatus', array_column($requests, 'request_to'));
var_dump($users);

function setUserRequestStatus(&$user, $key, $requests_sent_to) {
    $user['request_sent'] = in_array($user['id'], $requests_sent_to);
}