У меня проблема с моей рекурсивной функцией в PHP. Цель моей функции - сравнить ip с диапазоном ip. Вот моя модель данных для двух переменных:
Array
(
[0] => 150
[1] => 2
[2] => 0
[3] => 155
)
Array
(
[0] => Array
(
[0] => 150
[1] => 26
[2] => 0
[3] => 0
)
[1] => Array
(
[0] => 150
[1] => 100
[2] => 255
[3] => 255
)
)
Я знаю, что итерационный метод, вероятно, будет лучше, но он предназначен только для обучения рекурсивным методам.
Итак, вот мой код:
function checkRangeIp($ip_array, $range_ip_array, $recur_it = 0) {
if ($recur_it == 4)
return false;
$nb1 = $ip_array[$recur_it];
$nb2 = $range_ip_array[0][$recur_it];
$nb3 = $range_ip_array[1][$recur_it];
if ($nb1 < $nb2 || $nb1 > $nb3)
return true;
else
checkRangeIp($ip_array, $range_ip_array, $recur_it + 1);
}
Я не знаю почему, но когда я проверяю свою функцию, она всегда дает мне ложное возвращение.
if (checkRangeIp($ip_array, $range_ip_array))
echo "TRUE\n";
else
echo "FALSE\n";
У вас есть идея? Спасибо.