Echo 빈 ($ location)이 인쇄하더라도 해당 진술이 실행되지 않는 이유 1
-
19-09-2019 - |
문제
echo empty($location);
switch($location){
case (empty($location)):
expression 1;
break;
case ($location%10000==0):
expression 2;
break;
case ($location%100==0):
expression 3;
break;
default:
expression 4;
break;
}
비어 있으면 ($ location), 1을 인쇄 할 때, 표현 1이 실행되지 않는 이유는 무엇입니까?
해결책
스위치 문을 올바르게 사용하고 있지 않습니다. 그들이 일하는 방식은 각 사례 값을 초기와 비교하는 것입니다. switch
값.
귀하의 경우 척하자 $location = null
;
echo empty($location); // true: null is considered empty.
switch ($location) {
case empty($location) : // this performs the check:
// $location == empty($location)
// null == true ==> false
그래서 그것이 실행되지 않는 이유입니다 ..
나는 고집하는 것이 좋습니다 if .. else
이 경우.
다른 팁
그만큼 empty
함수는 1 또는 0의 부울 값을 반환합니다 http://uk3.php.net/empty
반면 switch / case
명령문은 변수가 특정 값을 보유하고 그에 따라 표현식을 실행하는지 확인합니다.
당신의 경우, expression 1
값의 경우 실행해야합니다 $location==1
(입력했을 때 효과적으로 요청했습니다 switch($location)
),
따라서 위의 코드의 논리는 다음과 같습니다.
$ location == 1 인 경우 표현식 1을 실행하십시오
$ location%100000 == 0 인 경우 표현 2를 실행합니다.
기타 등
값입니다 $location==1
?
ㅏ switch
진술은 An과 동일하지 않습니다 if/else
성명. 스위치 문은 특정 값을 찾고 있습니다. 주어진에 지정된 값을 찾는 경우 case
문, 그 후 코드를 실행합니다 case
성명.
다음 코드 :
switch($x)
case 1:
// some stuff
break;
case 2:
// some other stuff
break;
default:
// some more stuff
break;
이 코드와 동일합니다.
if($x == 1){
// some stuff
}
elseif($x == 2){
// some other stuff
}
else{
// some more stuff
}
원래, switch
진술은 바로 가기입니다 if/elseif/else
여러 가지 가능성에 대한 단일 변수의 평등을 확인하는 차단.
부터 empty()
첫 번째를 반환합니다 case
IF가 실행됩니다 $location
1 (if $location
비어 있음) 또는 0 (if $location
비어 있지 않음). 거의 다음을 쓴 것과 거의 같습니다.
elseif($location == empty($location)){ ...
이해가 되나요? a를 사용하는 대신 switch
진술, 당신은 아마 다음을 원할 것입니다.
if(empty($location)){
// ...
}
elseif($location % 10000 == 0){
// ...
}
// ...