Перебор 2 мерного массива одномерным массивом для выявления совпадений

$res двумерный массив $a Массив

<?php
$b = (int)52;
$a[0]= (int)$_POST['a1'];
$a[1]= (int)$_POST['a2'];
$a[2]= (int)$_POST['a3'];
$a[3]= (int)$_POST['a4'];
$a[4]= (int)$_POST['a5'];
$a[5]= (int)$_POST['a6'];
$a = array_unique($a);
$numbers = count($a);
if ($numbers < 5)
  echo "Числа не можуть повторюватися";
  elseif($a[0] > $b or $a[1] > $b or $a[2] > $b or $a[3] > $b or $a[4] > $b or $a[5] > $b)
  echo "Числа не можуть бути більшими за  52 ";
  elseif ($a[0] <= 0  or $a[1] <= 0 or $a[2] <=  0 or $a[3] <= 0  or $a[4] <= 0 or $a[5] <= 0)
  echo("Неправильно");
  else {
      for ($i = 0; $i < count($a); $i++)
      echo $a[$i]." ";
  }

$res = [];
if (($file = fopen('lots.csv', 'r')) !== false) {
  while (($data = fgetcsv($file, 1000, ';')) !== false) {
    $res[] = $data;
  }
  fclose($file);

}
$if2 = 0;
$if3 = 0;
$if4 = 0;
$if5 = 0;
$if6 = 0;

foreach ($res as $key=>$value) {
  $ans[$key] = array_intersect($a,$res);
  if ($ans >= 2)
    $if2 ++;
  elseif ($ans >=3) {
    $if3 ++;
  elseif ($ans >= 4) {
    $if4 ++;
  elseif ($ans >=5) {
    $if5 ++;
    elseif ($ans == 6) {
      $if6 ++;
    }
  }
  }
  }
}


?>

Ответы (1 шт):

Автор решения: splash58
<?php
$b = (int) 52;
$a[0]= (int)$_POST['a1'];
$a[1]= (int)$_POST['a2'];
$a[2]= (int)$_POST['a3'];
$a[3]= (int)$_POST['a4'];
$a[4]= (int)$_POST['a5'];
$a[5]= (int)$_POST['a6'];
$a = array_unique($a);
$numbers = count($a);

// достаточно проверить максимальное и минимальное значения
if ($numbers < 5)
    echo "Числа не можуть повторюватися";
elseif(max($a) > $b)
    echo "Числа не можуть бути більшими за  52 ";
elseif (min($a) <= 0)
    echo("Неправильно");
else
    echo implode(' ', $a);

$res = [];
if (($file = fopen('lots.csv', 'r')) !== false) {
    while (($data = fgetcsv($file, 1000, ';')) !== false) {
        $res[] = $data;
    }
    fclose($file);
}

// сделаем массив, индекс - число пересечений, значение - количество
$total = array_fill(0, 6 , 0);

foreach ($res as $value) {
    $total[count(array_intersect($a,$value))]++;
}

//  сколько раз совпали два числа 
echo $total[2];
→ Ссылка