2016-10-11 3 views
0

Я работаю над расширением моих навыков PHP, и я пытаюсь написать простую программу, которая вычисляет объем и проверки, чтобы убедиться, что все числовые значения от 0 до 20, но по какой-то причине я могу " t заставить мою программу распознавать неправильные номера.Ошибка проверки PHP

<?php 

//read deep end 
$deepEnd = $_POST['deepEnd']; 

//read shallow end 
$shallowEnd = $_POST['shallowEnd']; 

    //read length 
$length = $_POST['length']; 

//read width 
$width = $_POST['width']; 

$flag = false; 
$min = 0; 
$max = 20; 

if($deepEnd < $min && $deepEnd > $max){ 
     $flag = true; 
} 
if($shallowEnd < $min && $shallowEnd > $max){ 
     $flag = true; 
    } 
if($length < $min && $length > $max){ 
     $flag = true; 
} 
if($width < $min && $width > $max){ 
     $flag = true; 
} 

$volume = 0.5*($deepEnd+$shallowEnd)*$length*$width*7.5; 

echo "<h2>Volume Calculator</h2>"; 

if($flag == 'true'){ 
     echo "<p>Incorrect value input. Please enter 0-20.</p>\n"; 
} else { 
     echo "<p>Your volume is: ".$volume." gallons.</p>\n"; 
} 
?> 

Мои данные взяты из моей программы HTML. <input type='number'>, поэтому я смущен, почему мои инструкции if не интерпретируют его правильно.

ответ

1

Вы сравниваете каждую переменную, если она меньше $min и более $max. Если ваш $min больше $max, ваш код не работает.

Пример:

$min = 0; 
$max = 10; 
$x = 5; 
if ($x < $min && $x > $max) { // this will always evaluate as false 
    // won't execute here 
} 

Чтобы решить проблему, которая должна проверить, если значение выходит за рамки $min или $max, вы должны использовать оператор ||.

Пример:

$min = 0; 
$max = 10; 
$x = -5; 
if ($x < $min || $x > $max) { // true 
    // do something 
} 
+0

Разве это не то, что я хочу узнать? Мне нужно проверить, чтобы эти переменные не выходили за пределы моего минимального значения и максимального значения. – WegnerLJ26

+0

@WagsPG Пожалуйста, объясните вашу проблему в ** detail **. Например, поставьте примеры. –

+0

OH! Мне нужно использовать || заставить его работать? – WegnerLJ26

0

Мне кажется, ваша логика не так, в первой проверки: -

if($deepEnd < $min && $deepEnd > $max){ 
     $flag = true; 
} 

это только вернет ошибку, если $ deepend меньше мин и больше, чем максимум, который никогда не мог произойти, тестирование вашего кода: -

if($deepEnd < $min OR $deepEnd > $max){ 
     $flag = true; 
} 

работал для меня

Смежные вопросы