@oldzas

Как перебрать элементы первого массива на вхождение во втором массиве на php?

Добрый день.

Есть 1 массива с SKU.
Есть еще 2 массив с параметрами.
Вопрос: как перебрать первый массив и проверить есть вхождение во 2ой массив в конкретное поле или нет ?
Ищу в поле PROPERTY_112 -> value

Ищу элегантное решение, мне на ум приходят только костыли.
Спасибо

Первый массив:
Array
(
    [0] => BBBBB
    [1] => AAAAAA
    [2] => YYYYY
    [3] => CCCCC
)


Второй массив:
Array
(
    [result] => Array
        (
            [0] => Array
                (
                    [ID] => 712
                    [NAME] => 76896789
                    [PROPERTY_112] => Array
                        (
                            [valueId] => 4208
                            [value] => AAAAAA
                        )

                )

            [1] => Array
                (
                    [ID] => 1082
                    [NAME] => 4567456747
                    [PROPERTY_112] => Array
                        (
                            [valueId] => 6416
                            [value] => BBBBB
                        )

                )

            [2] => Array
                (
                    [ID] => 1270
                    [NAME] => 4578467857
                    [PROPERTY_112] => Array
                        (
                            [valueId] => 7552
                            [value] => CCCCC
                        )

                )

            [3] => Array
                (
                    [ID] => 1532
                    [NAME] => 45674567
                    [PROPERTY_112] => Array
                        (
                            [valueId] => 8700
                            [value] => YYYYY
                        )

                )

        )


)
  • Вопрос задан
  • 132 просмотра
Решения вопроса 1
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
<?php
$arr1 = [
    'BBBBB',
    'AAAAAA',
    'YYYYY',
]; 

$arr2 = ['result' => [
    ['ID' => 712, 'PROPERTY_112' => ['value' => 'AAAAAA']],
    ['ID' => 713, 'PROPERTY_112' => ['value' => 'BBBBBB']],
    ['ID' => 714, 'PROPERTY_112' => ['value' => 'CCCCCC']],
]];

$values = array_column(array_column($arr2['result'], 'PROPERTY_112'), 'value');

$intersections = array_intersect($arr1, $values);

echo empty($intersections) ? 
    'Совпадений не найдено' : 
    'В массиве $arr2 найдены совпадения из списка $arr1: '.join(',', $intersections)
;
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
0xD34F
@0xD34F
array_intersect($arr, array_map(fn($n) => $n['PROPERTY_112']['value'], $result))
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Создать дополнительный массив, в который выбрать значения value и проверять на вхождение в него.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы