0
PHPの再帰関数に問題があります。私の機能の目的はipとipの範囲を比較することです。ここでは、2つの変数のための私のデータモデルである:PHPの再帰関数
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
)
)
私は反復法は、おそらく良くなるけど、それだけでrecursives方法と訓練のためです。 だからここに私のコードです:
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";
アイデアはありますか?ありがとうございました。
それぞれの範囲のペアを比較しているだけなら、それは再帰に役立つものではありません。代わりにそれをループにしてください。 – mario
あなたの関数は、 '$ nb1 <$ nb2 || $ nb1> $ nb3'である。これは最初の値 '150'の場合ではありません。戻り値ではなく、 'checkRangeIp'をもう一度呼び出しますが、その呼び出しの戻り値を返さないので、何も返しません。つまり、これが修正されたとしても、範囲チェックが正しいとは思われません。これは再帰的な解決策では実際問題ではありません。 –