문제

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){
    // ...
}
// ...
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top