Проверка масива на совпадения

141
13 декабря 2019, 06:00

Есть n-кол-во массивов. Нужно проверить все эти массивы с одним и найти хотя бы одно совпадения, если есть, то возвращать true, если нету не одного совпадения то возвращаем false. Если есть пустов массив то его просто пропускаем.

Например масив с которым нужно сравнить

0 => '29',
1 => '26',
2 => '8'

И есть три масива

Первый:

0 => '3'
1 => '8'

Второй пустой массив, его нужно пропустить и не учитывать.

Третий:

0 => '1'
1 => '40'

В итоге проверяет с первым массивом и возврашает true, второй пропускает, третий возвращает false. Потом нужно проверить если есть хотя бы один false то возвращать false, не смотя на то что первый true.

Вот пример, только как закинуть это все в цыкл что бы все это было динамически , кроме того масива с которым сравниваем. Что бы оно узнавало сколько масивов пришло нам на проверку, потом каждый масив подставлял сравнивать, и вовзращал true или false, и что бы пропускал пустые массивы.

$stat = array (29,26,8,9);
//var_dump($cat); 
$cat1 = array (1,2,3,7,8,26);
$cat2= array (1,2,3,7,8);
$cat3= array (1,2);
$cat4= array (9);
$result = array_intersect($cat1, $stat);
if($result === Array()){
 echo 0;
} else{
 echo 1; 
}
Answer 1

Опишите выходные данные. Проверочные массивы лучше сложить в один:

$input = [29, 26, 8];
$arr1 = [3,8];
$arr2 = [];
$arr3 = [1,40];
$data = [$arr1, $arr2, $arr3];

Далее, фактически вам надо массив $data свести к одному значению. Для этих целей можно использовать функцию array_reduce(). дальнейший результат можно вычислять как логическое И (&&) между предыдущим сравнением, и текущим пересечением. Если же входной пустой, то просто брать предыдущее значение:

$result = array_reduce($data, function($result, $arr) use ($input){
                    if(!$arr) return $result;
                    return $result && array_intersect($input, $arr);
                }, true);

можно изначально отфильтровать пустые входные:

$data = array_filter($data);
....

и тогда проверка if(!$arr) уже не нужна

READ ALSO
Ошибка при получении данных с массива PHP

Ошибка при получении данных с массива PHP

пытаюсь достать данные с db при помощи PDO но получаю ошибку:

99
Symfony4.2 form_login, после аутентификации возвращает 500

Symfony4.2 form_login, после аутентификации возвращает 500

После submit login формы, редирект не происходить, и выдаются 500 ошибкаРегистрация проходит успешно, user сохраняется в базе, но с ним нельзя залогинится

126