2012-09-02 2 views
1

좋습니다. 우선, 이것은 매우 특별한 문제입니다. 나는 오랫동안 PHP를 연구 중이었고 왜 이런 일이 일어 났는지 모른다.PHP 그러면 스위치 문이 작동하지 않습니다.

나는 adminUpdate 기능을 가지고 있습니다. 이 함수는 true를 반환합니다. 나는 항상 테스트를 위해 true로 되돌려 놓았다.

그런 다음 그 기능을 사용합니다.

static function result2JSON($result,$options = array()) { 

     if($result == "permission") { 
      echo "permission"; 
     } 

     if($result == true) { 
      echo "true"; 
     } 


     switch ($result) { 
      case 'permission': 
       die($result."xxx permission"); 
       $json = self::setJSON("Permission"); 
       break; 
      case 'exist': 
       $json = self::setJSON("Exist"); 
       break; 
      case false: 
       $json = self::setJSON("Error"); 
       break; 
      case "": 
       $json = self::setJSON("Error"); 
       break; 
      case 1 : 
       $json = self::setJSON("OK"); 
       break; 
      case true: 
       $json = self::setJSON("OK"); 
       break; 
      default: 
       $json = self::setJSON("OK"); 
       break; 
     } 


     $json = array_merge($json,$options); 


     return $json; 

    } 

이 "Echo"는이 경우 테스트에 사용됩니다. 그래서이 함수가 취하기 전에 $ result는 항상 true입니다.

그러나 이것은 내가 가진 출력 : 스위치 == "권한"다음 $ 결과 = 권한을 의미

permissiontrueResult = 1 IN permission section 

다음 == true로합니다. 왜 그럴까요?

+1

사용을'php.net에 부울 페이지에서 봐 (짧은) http://php.net/manual/en/language.types.boolean.php 와 PHP 비교 연산자 페이지를 가지고 ==='경우 다른 값, 또는'비교하기 ' – mask8

+0

고마워요, 이제는 배우기 때문에이 케이스는 스위치를 사용할 수 없습니다. 거짓 | 끈. 이 경우는 | else 이유가 설명되지 않은 경우 –

답변

1

문자열이있는 항목은 부울로 처리하려고하면 참으로 평가됩니다.

: (.. 물론, 좋아, 문자열 "0"False로 평가 PHP가 이상해)

을 그래서, 당신은 변수가 실제로 사실인지 확인하려는 경우, 당신은 또한 유형을 확인하는 비교를 사용해야합니다

if ($result === "permission") { ... } 

if ($result === True) { ... } 
0

당신은 당신은 평등에 대한 검사보다는 === 신원 확인을 사용할 수 있습니다 ===

+1

-1입니다. – Kermit

+0

@njk 내 대답을 읽는 것은 지능형 독자가 설명서에서 더 자세히 읽고 (또는 대안으로 요청할 수있는) 충분한 정보를 제공해야합니다. 대답이 유용하지 않으면 -1을 클릭해야합니다. 자, 그렇지? – alfasin

+0

다운 투표는 주관적입니다. 나는 당신의 대답이 너무 단순하고 '왜', '단지'를 제공하지 않는다고 느낍니다. 아마도 OP를 비교 운영자에게 인도할까요? – Kermit

관련 문제