删除多维数组中没有与单独数组匹配的键的部分?

时间:2019-06-10 20:55:51

标签: php arrays multidimensional-array

我有一个充满ID的数组,这些ID将与索引较大的单独数组中的对应ID匹配。我想首先使用较小数组中的ID搜索较大数组,并消除较小数组中未出现的所有索引,然后将与我的初始较小数组匹配的数组中存在的值放入。我已经尝试了各种嵌套的for循环(接近,但无法使我到达那里),但是我似乎无法将自己笼罩在一般的数组问题上。

第一个数组看起来像这样:

Array
(
[0] => Array
    (
        [roleID] => 5b6468a500277c71b98405b1f140991c
        [name] => 
        [description] => 
        [rate] => 
        [hours] => 
        [total] => 
    )

[1] => Array
    (
        [roleID] => 5b6468a500277c74f6b2c065436b7d17
        [name] => 
        [description] => 
        [rate] => 
        [hours] => 
        [total] => 
    )

[2] => Array
    (
        [roleID] => 5b6468a500277c7697ba21928129e3af
        [name] => 
        [description] => 
        [rate] => 
        [hours] => 
        [total] => 
    )

第二个数组看起来像这样

Array
(
[0] => stdClass Object
    (
        [ID] => 5b6468a500277c71b98405b1f140991c
        [name] => CED
        [objCode] => ROLE
        [description] => CED
    )

[1] => stdClass Object
    (
        [ID] => 5b6468a500277c74f6b2c065436b7d17
        [name] => AD
        [objCode] => ROLE
        [description] => AD
    )

[2] => stdClass Object
    (
        [ID] => 5b6468a500277c7697ba21928129e3af
        [name] => AMG
        [objCode] => ROLE
        [description] => AMG
    )

[3] => stdClass Object
    (
        [ID] => 5b6468a500277c77071c32c0bb2bae04
        [name] => AP
        [objCode] => ROLE
        [description] => AP
    )

[4] => stdClass Object
    (
        [ID] => 5b6468a500277c787e9680625c74ca80
        [name] => AST
        [objCode] => ROLE
        [description] => AST
    )

[5] => stdClass Object
    (
        [ID] => 5b6468a500277c79c0eddb8c14cc9f83
        [name] => ASV
        [objCode] => ROLE
        [description] => ASV
    )

我想将第一个ID中的roleID与第二个数组中的ID匹配,然后使用'name'和'description'键并将其放在第一个数组中它所属的位置。我已经接近以下代码,但是要么一堆数组顺序错误,要么每个索引的“名称”和“描述”字段完全相同。

    $projectUserRoleIDs = $client->get('project', $myProjectName, array('projectUserRoles:roleID'));
    $projectUserRoleIDs = $projectUserRoleIDs->projectUserRoles;

    $roleIDs = [];

    for($a = 0; $a < count($projectUserRoleIDs); $a++)
    {
        $roleIDs[$a]['roleID'] = $projectUserRoleIDs[$a]->roleID;


            // Get array of entire list of roles that are available in Workfront
            // The roles:name category has all of the acronyms for each role, which can appear in an invoice
            // The roles:description category has all of the full length names

            $projectRoles = $client->get('project', $myProjectName, array('roles:name', 'roles:description'));
            $projectRoles = $projectRoles->roles;

            $roleLoop = [];
            for($b = 0; $b < count($projectUserRoleIDs); $b++)
            {
                $roleLoop[] = $projectUserRoleIDs[$b]->roleID;
            }

            foreach($roleLoop as $key => $value) {
                for($x = 0; $x<count($projectRoles); $x++)
                {
                    if($projectRoles[$x]->ID === $value)
                    {
                        $name = $projectRoles[$x]->name;
                        $description = $projectRoles[$x]->description;

                        $roleIDs[$x]['name'] = $name;
                        $roleIDs[$x]['description'] = $description;
                    }
                }
            }







        $roleIDs[$a]['rate'] = '';
        $roleIDs[$a]['hours'] = '';
        $roleIDs[$a]['total'] = '';
    }

最后,我希望我的第一个数组看起来像这样

Array
(
[0] => Array
    (
        [roleID] => 5b6468a500277c71b98405b1f140991c
        [name] => CED
        [description] => CED
        [rate] => 
        [hours] => 
        [total] => 
    )
[1] => Array
(
    [roleID] => 5b6468a500277c74f6b2c065436b7d17
    [name] => AD
    [description] => AD
    [rate] => 
    [hours] => 
    [total] => 
)

以此类推...感谢您的帮助。

0 个答案:

没有答案