2013-01-09 3 views
0
<?php 
$a = $_POST['a']; 
$b = $_POST['b']; 
$c; 

if(is_numeric($a) && is_numeric($b)){ 
echo "string"; 
exit(); 
} 

if(!is_numeric($a) && !is_numeric($b)) { 
echo "string"; 
exit(); 
} 

if(isset($a)){ 
$resultat=$b*2.54; 
echo "string " . $c . " string"; 
exit(); 
} 

if(isset($b)){ 
$resultat=$a/2.54; 
echo "string " . $c . " string"; 
exit(); 
} 
?> 

양식 필드 1을 확인하여 시작합니다. & 2 숫자 값을 입력하고 두 값이 모두 유지되는지 확인합니다. 잘 작동하지만 두 번째 부분으로 내려 가면 처음 "if"를 지나치지 않고 항상 "$"집합으로 간주됩니다 ...변수가 비어 있지 않아야합니까?

사례를 사용해야합니까? 또는?

+0

(나는 할 수 없었다 꽤 따라와). 또한 왜 $ a가 비어 있어야한다고 생각하니? – DWright

+0

양식을 통해 입력을 얻습니다. 양식을 비워두면 $ a가 비어 있어야하며 $ a가 설정되지 않고 $ b가 –

+6

'empty'로 설정 되어도 if (isset ($ a))를 지나치지 않습니다. 와'isset'은 PHP에서 다릅니다. 변수는 비어있을 수 있지만 양식에서 전달되는 경우 설정됩니다. – Stan

답변

0

if(isset($a))을 검사 할 때 빈 문자열이 필요합니다. 문제는 그것이 비어있는 경우가 아니라 설정되어 있는지 확인하는 것입니다. 변수는 인스턴스화 할 때 첫 번째 줄에 설정됩니다. 양식은 $ _POST에 빈 문자열을 전달하므로 $ a가 빈 문자열이 아닌지 확인해야합니다.

if ($a !== '') { 
    $resultat=$b*2.54; 
    echo "string " . $c . " string"; 
    exit(); 
} 
0

기술적으로 $ a는 항상 $ _POST [ 'a']로 설정되어 있기 때문에 항상 $ a가 설정됩니다. 따라서 $ _POST [ 'a']가 비어 있더라도 매번 "설정"됩니다. 다음을 사용하십시오.

if (!empty($a)) 

$ a가 비어 있지 않은지 확인합니다.

0

변수 $ a는 $ _POST [ 'a'] 값을 가지며이 값이 비어 있으면 PHP는주의 오류를 발생 시키므로 맨 먼저해야 할 일은 isset을 사용하는 것입니다.

$a = isset($_POST['a']) ? $_POST['a'] : null //Set $a to $_POST['a'] when NOT empty 

PHP의 isset 함수는 값이 null 인 경우에도 변수가 설정되지 않은 경우에만 true를 반환합니다. ","할 것이다 널 (null)과 거짓 0 :

if ($a == null) { 
    echo 'A is emty..'; 
} 

이런 식으로 값 :

두 번째 것은 값이 null인지 확인하는 것입니다

, 당신이 할 수있는 가장 좋은 방법은 느슨한 비교를 사용하는 것입니다 "비어있는"것으로 간주됩니다. 당신이 값이 실제로 null의 경우 알고 싶은 경우

사용하는 엄격한 비교 한 배 "="A : 너무 얻는다 결코 그 부분은 어느 부분

if ($a === null) { 
    echo 'A is empty'; 
} 
관련 문제