Цикл 2 массивов и сравнить есть ли равные значения (неопределенное смещение) - PullRequest
1 голос
/ 19 марта 2019

У меня есть 2 массива $group_permissions и $result во время цикла $result, я сравниваю $group_permissions[$keys]->perm_id из $group_permissions массива с $result[$keys]->id из $result массива. но записи в массиве $group_permissions меньше записей в массиве $result. так что при цикле происходит ошибка

Сообщение: неопределенное смещение: 14

$result array
Array
(
    [0] => stdClass Object
        (
            [id] => 1025
            [name] => Library Membership
            [permission_code] => library_membership
            [hash_code] => 7f7758029e0b3b7f0154e98779f66082
            [description] => Library Membership
            [parent_id] => 0
            [level] => 1
            [sequence] => 10000
            [is_child] => 0
        )

    [1] => stdClass Object
        (
            [id] => 514
            [name] => Member Profiles
            [permission_code] => mem_pro
            [hash_code] => f3e3f0150a0172eca3f3279f9d3919d6
            [description] => Member Profiles
            [parent_id] => 0
            [level] => 1
            [sequence] => 10008
            [is_child] => 0
        )

$group_permissions array

Array
(
    [0] => stdClass Object
        (
            [perm_id] => 1321
        )

    [1] => stdClass Object
        (
            [perm_id] => 1322
        )

    [2] => stdClass Object
        (
            [perm_id] => 1323
        )

    [3] => stdClass Object
        (
            [perm_id] => 1324
        )

Это мой код.

$group_permissions = $this->get_group_permissions($user_id);

        $result = $this->getPermisstions();

        $parent_id = array();

        foreach ($result as $keys => $row)
        {
            $sub_data["id"] = $result[$keys]->id;
            $sub_data["text"] = $result[$keys]->name;
            if ($group_permissions[$keys]->perm_id == $result[$keys]->id) {

                $sub_data["state"] = ['selected' => true, 'disabled' => true];
            }
            array_push($parent_id, $result[$keys]->id);

            $data[] = $sub_data;
        }

Если в 2 массивах есть равные значения, я хочу добавить это $sub_data["state"] = ['selected' => true, 'disabled' => true]; в массив $sub_data.

1 Ответ

0 голосов
/ 19 марта 2019

Сравнивая значение обоих массивов, вы можете проверить, есть ли у массива $group_permissions определенный ключ, или нет, используя функцию array_key_exist, как показано ниже:

if (array_key_exists($keys, $group_permissions)) {
    if ($group_permissions[$keys]->perm_id == $result[$keys]->id) {
        $sub_data["state"] = ['selected' => true, 'disabled' => true];
    }
}

Таким образом, ваш код будет работать, только если у вас есть такой жеключ.Надеюсь, это поможет вам.

...