Удаление частей многомерного массива, у которых нет ключа, соответствующего отдельному массиву? - PullRequest
0 голосов
/ 10 июня 2019

У меня есть массив, который заполнен идентификаторами, которые будут соответствовать соответствующим идентификаторам в отдельном массиве, который больше с точки зрения индексов.Я хотел бы сначала выполнить поиск по большому массиву, используя идентификаторы из меньшего массива, и исключить все индексы, которые не появляются в меньшем массиве, а затем поместить значения, присутствующие в массивах, которые совпадают в моем исходном меньшем массиве.Я пробовал различные вложенные циклы (подходите близко, но не дошли до меня), но я, кажется, не могу в целом задуматься о некоторых проблемах с массивами.

Первый массив будет выглядеть примерно так:

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
    )

)

Я хочу сопоставить roleID в первом идентификаторе сID во втором массиве, затем возьмите ключи 'name' и 'description' и поместите его в первый массив в той позиции, которой он принадлежит.Я подошел ближе к приведенному ниже коду, но либо наборы массивов были ошибочно упорядочены, либо поля '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] => 
)

И так далее ... любая помощь приветствуется и спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...