2010-12-09 5 views
0

if if 조건을 검사하고 싶습니다.0 값에 대한 조건 검사

if(isset($_GET['q'])) 
{ 
echo "ok"; 
} 
esle 
{ 
echo "not ok"; 
} 

$ _GET [ 'q'] = 0이면 다른 부분으로 보내주십시오.

하지만 들어가고 싶습니다.

$ _GET [ 'q']가 0 일지라도 값을 가져야합니다. ok

도움이 필요하십니까?

+1

그렇게해서는 안됩니다. "set"변수 중'null' 값은 "not set"으로 계산되며, "0"은 반드시 "설정"되어야합니다. 'var_dump ($ _ GET [ 'q'])를 시도하십시오. – deceze

+0

제쳐두고 양식을 당신이 여기에있다 (문제가 그들이 당신에게 구문 오류를 줄 것이다 원인) arent 작동합니다. '$ _GET [ 'q']'가'$ _POST'가 아니거나'$ _GET [ 'Q']'로 전달되었다고 확신합니까? – prodigitalson

답변

3

isset가하는 일입니다. 시도해보십시오.

$x["q"] = 0; 
var_dump(isset($x["q"])); 

사실을 알 수 있습니다. isset()0false을 반환한다고 생각하면 잘못된 장소를보고 다른 곳에있는 버그를 찾으십시오.

0

0 당신은 당신이 원하는 값이

if(isset($_GET['q']) && intval($_GET['q']) > 0) 
{ 
echo "ok"; 
} 
else 
{ 
echo "not ok"; 
} 
0

아마도 array_key_exists()이 더 적합 할 것이다 정수 고려 이런 일을해야 할 수도 있습니다 http://php.net/manual/en/function.isset.php

널 (null)이 아닙니다. 나는 이것이 올바른 생각

if (array_key_exists('q', $_GET)) ...

+0

'$ _GET '값은 "설정되지 않음"이거나 "널 (null)"이 아닌 값을 가질 수 있습니다. 따라서'array_key_exists'와'isset'을 사용하면 동일한 결과를 얻을 수 있습니다. – deceze

+0

첫 번째 문장의 의미를 정확하게 알지 못합니다. 그러나 나는 빠른 테스트를했고, 내가 말할 수있는 한, 당신은 두 번째 문장에서 정확합니다. 나는 op가 @prodigitalson이 제안하는대로 이상한 일들이 벌어 질 수도 있다고 생각한다. –

+0

첫 문장 :'foo.php?'''$ _GET [ 'q']'는 * 설정되어 있지 않습니다,'foo.php? q' →'$ _GET [ 'q'] === '''. 값은 * 설정되지 않음 *이거나 일부 값을가집니다. 그것은 결코 'null'이 될 수 없다. 따라서,'isset'과'array_key_exists'는 아무런 차이가 없습니다. – deceze

0

...

if(array_key_exists('q', $_GET)){ 
    echo "ok"; 
} 
else{ 
    echo "not ok"; 
}