2014-01-20 3 views
-1

는이 코드가있는 경우 :상태와 빈 변수

If(!isset($a) || empty($a)) 
{ 
    // code to run when $a not set or empty; 
} 
Elseif ($a==0) 
{ 
    //code to run when $a is equal 0 
} 
Else 
{ 
     //code to run in all other scenarios 
} 

문제는 $ a가 같은 경우 0 다음 빈 ($ A) 사실이고 첫 번째 코드가 실행되는 것입니다. 나는 두 번째 실행해야합니다. 어떻게해야합니까?

+0

음, * 조건 * 정확히 무엇을 : – deceze

+0

$ a가 설정되어 있는지 확인하고 싶다면 첫 번째 코드를 실행하십시오. 비어있는 경우 (빈 문자열이거나 아무것도 설정하지 않은 경우) 첫 번째 코드를 실행하십시오. 0과 같으면 두 번째 코드를 실행하고, 다른 코드 (음수 또는 양수)가 세 번째 코드를 실행하면 두 번째 코드를 실행합니다. 이해가 안되는 이유를 이해하지 못합니다. – user2395238

답변

0

이 시도 시도해야합니다 :

if((!isset($a) || empty($a)) && $a !== 0) 
{ 
    // code runs when $a not set or empty and $a is not 0; 
} 
elseif ($a === 0) 
{ 
    //code runs when $a is equal 0 
} 
else 
{ 
     //code runs in all other scenarios 
} 

업데이트 : 비교를 형태 보증으로 변경 .

if (!isset($a) || (empty($a) && $a!==0)) 
{ 
    //run code if $a is not set or is empty 
} 
elseif ($a===0) 
{ 
    //run code if $a is 0; 
} 
else 
{ 
    //all other scenarios 
} 
+0

이것은 작동하지 않았습니다. 내가 $ a = ""를 설정하면 두 번째 코드가 실행됩니다. 첫 번째 코드가 실행되기를 원하지만. PHP $ a = ""와 $ a = 0 같은 것 같습니다. – user2395238

+0

나는 해결책을 찾았고 당신의 대답은 가장 가까웠고 내가 시도한 것을 시도해 보도록 영감을 주었다. 광산과 일치하도록 수정 (등호 기호 추가)하면 답변을 수락합니다 – user2395238

+0

맞습니다 -이 경우 유형 안전 비교를 사용하는 것이 좋습니다. 제안에 감사드립니다. –

-1

빈 함수는 0 (정수로 0) 일 때 false를 반환합니다.

그래서 코드는

If(!isset($a)) 
{ 
    // code to run when $a not set or empty; 
} 
Elseif ($a==0) 
{ 
    //code to run when $a is equal 0 
} 
Else 
{ 
     //code to run in all other scenarios 
} 
+0

[empty] (http://us1.php.net/manual/en/function.empty.php) 값이 문자열 또는 정수로 0 일 때 false를 반환합니다. –

+0

빈 문자열을 비어있는 것으로 간주해야합니다. 귀하의 경우 다른 모든 시나리오 * – sectus

0

이를 교체하고

If(!isset($a) || $a=='') 
{ 
// code to run when $a not set or empty; 
} 
Elseif ($a==0) 
{ 
    //code to run when $a is equal 0 
} 
Else 
{ 
     //code to run in all other scenarios 
} 
+0

'빈'을'$ a == ''로 대체 할 수 없습니다. – sectus

+0

왜? 비어있는 것과 비어있는 것 모두 내 지식에서 동일합니다. 왜 내가 대체 할 수 없는지 이유를 말해 주시겠습니까? – wild

+1

http://php.net/empty – sectus

2
if (isset($a) && $a == 0) 
    { 
    //code to run when $a is equal 0 
    } 
elseif (empty($a)) 
    { 
    // code to run when $a not set or empty; 
    } 
else 
    { 
    //code to run in all other scenarios 
    } 
+0

나는 이것에 대해 흥분하고 있었다. 그러나 그것을 시도했을 때 작동하지 않았습니다. $ a = ""를 설정하면 두 번째 코드가 – user2395238

+0

@user2395238까지 실행 되더라도 첫 번째 코드가 실행됩니다. 나는 당신의 논리가 당신의 코드와 완전히 다른 것을 본다. 제발, 당신의 대답을 업데이 트하십시오. – sectus

0

나는 해결책을 찾았나요? 정확히 무엇을 테스트하고 싶습니까?