@Beeshop87

Как сравнить несколько массивов и вернуть общее значение в php?

Всем привет! Никак не найду решение. Есть идеи?
Имеем такой массив:

$array {
  [0]=>
  array(1) {
    [0]=>
    string(2) "28"
  }
  [1]=>
  array(2) {
    [0]=>
    string(2) "28"
    [1]=>
    string(2) "29"
  }
}


И массив для сравнения:

$filter {
  [0]=>
  string(2) "28"
  [1]=>
  string(2) "29"
}


Подскажите как сравнить $array с массивом сравнения чтобы получить только 28 ?

такой код возвращает все совпадения.

foreach ($array as $item) {

  $arResult = array_intersect($filter, $item);

}
  • Вопрос задан
  • 118 просмотров
Решения вопроса 1
Fernus
@Fernus
Техник - Механик :)
Как вариант для понимания логики...

<?php

$ar1 = [
        [28],
        [28, 29]
    ];
    
$ar2 = [28, 29];

$arRes = [];
$arResult = [];

foreach($ar1 as $arItems) {
    
    foreach($arItems as $item) {
        
        if(in_array($item, $ar2))
            if(!isset($arRes[$item]))
                    $arRes[$item] = 1;
                else
                    $arRes[$item]++;
        
    }
    
}

$allAr1 = count($ar1);

foreach($arRes as $k => $v)
    if($v >= $allAr1)
        $arResult[] = $k;
        
print_r($arResult);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
AleksandrB
@AleksandrB
Совсем недавно вывел "Hello world"
Красивое решение: array_intersect
Гибкое, но костыльное:
$ar1 = [1, 2];
$ar2 = [2];
$res = [];
foreach ($ar1 as $val) {
  $key = array_search($val, $ar2);
  if ($key !== false) {
     $res[] = $val;
  }
}
Ответ написан
Ваш ответ на вопрос

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

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