2011-07-01 6 views
1

다음은 조건입니다. -부울 OR 조건 - 무엇이 잘못 되었나요?

if ($file !== "." || $file !== "..") 

이 작동하지 않습니다.

if (($file !== ".") || ($file !== "..")) 

도 작동하지 않습니다.

if ($file !== ".") 

은 정상적으로 작동합니다. ' 그게 날 초초 해. 나는 php.net가 논리 연산자 (http://php.net/manual/en/language.operators.logical.php)를 제공해야한다는 것을 모두 읽었으며, 내가 봤던 시시한 자습서를 많이 봤고, 나는 연산자 우선 순위를 3 번 ​​확인했다. 모든 점에서 두 가지 방법 중 하나를 사용해야합니다.

이유가 무엇일까요?

+4

, 당신이 실제로 원하는 것은 : 반대

if ($file !== "." && $file !== "..") { // $file is neither . nor .. } 

을 또는 그'경우 ($ 파일을! == "."&& $ file! == "..")' – Yoshi

+0

AND 연산자 ('&&')를 찾으십니까? "파일이이 파일과 같지 않고이 파일과 같지 않은 경우"와 마찬가지입니까? –

+0

'! =='대신 '! ='처럼 확인 하시겠습니까? 맞습니까? – deepi

답변

10

$file. 않는 것이 좋으며 ..

if ($file !== "." && $file !== "..")

+0

그래, 내 논리가 실패 했어. 감사. – Arnthor

+0

나에게 항상 일어납니다 ;-) – fire

0

항상 만일의 진정한 조건에 떨어지는 안? $ 파일은 "."과 같을 수 없습니다. 그리고 ".."그래서 귀하의 조건은 항상 사실이 될 것입니다. 또는 대신에 및가 필요하지 않습니까?

1

표현식 :

if ($file !== "." || $file !== "..") 
if (($file !== ".") || ($file !== "..")) 

$file을 위해 가능한 모든 값을 true로 평가합니다 : .에 대한

  • 진정한 조건 $file !== "." 반환 ..에 대한
  • $file !== ".." true를 반환 조건 a에 대한
  • 두 조건 $file !== "."$file !== ".." 반환 진정한

것은 당신이 원하는 일 내 : 나는 내기 것

if ($file === "." || $file === "..") { 
    // $file is either . nor .. 
} 
관련 문제