Как получить общее минимальное значение в двух массивах

У меня есть функция, которая проверяет два массива и возвращает общее минимальное значение в обоих массивах. ИТ возвращает правильный ответ, когда оба массива имеют одинаковое количество элементов. Но если другой другой больше, он не возвращает правильный. Как это побороть?

<?php
    $A = array(0);
    $B= array(1,0);
    $n = sizeof($A);
    $m = sizeof($B);
    sort($A);
    sort($B);
    $i = 0;
    for ($k = 0; $k < $n; $k++) {
        if ($i < $m - 1 AND $B[$i] < $A[$k])
            $i += 1;
        if ($A[$k] == $B[$i])
            echo $A[$k];
    }
    echo "end";

?>

Спасибо

3 ответа

Решение

Более простым способом было бы взять минимальное значение пересечения ваших массивов:

$array = array (5,6,7,8,9);
$array2 = array (9,7,5,3,4,1);

$min = min(array_intersect($array, $array2));
echo $min; // 5

Я бы использовал array_intersect. Он даст вам массив только с теми значениями, которые присутствуют в обоих просматриваемых массивах, тогда вы сможете найти самое низкое значение в массиве.

$A = array(0,5,4,3,2,1,4);
$B = array(0,1,3,4);
$C = array_intersect($A, $B);
$low = $C[0];

for($i = 0; $i < count($C); $i++) {
   if($C[$i] < $low) 
      $low = $C[$i];
}

echo "Lowest shared number is $low";

Используйте PHP-функцию https://php.net/array_intersect для извлечения общих значений из двух массивов, затем извлеките минимальное значение с помощью min()

Вот так:

<?php

$arrayOne = [1, 3, 5, 6, 7];
$arrayTwo = [0, 9, 2, 3, 4, 5];

echo min(array_intersect($arrayOne, $arrayTwo)); // 3
Другие вопросы по тегам