2010-03-30 5 views
0

은 내가 $ 데이터가 데이터베이스에서 레코드입니다 조건문php : 조건이 맞으면 어떻게됩니까?

if ((strlen($data[70])>0) || ((remove19((trim($data[29])) == '7135556666')) && isLongDistance($data[8])) ) 

경우 다음 있습니다. 또한

내 목표는 $ 데이터 [70] 비어 있지 않은 모든 행을 포함하는 것입니다

및 행을 포함 할 경우 $ 데이터 [29] = 713,555,666 & & $ 데이터 [8] isLongDistance = TRUE

내 질문 isLongDistance ($ data [8])가 false를 반환하면 $ data [70]이 비어 있지 않으므로 여전히 행을 반환합니까?

미리 감사드립니다.

답변

3

예, OR을 수행했기 때문에 가능합니다. 귀하의 진술은 "TRUE OR (TRUE AND FALSE)"로 감소되며, TRUE가됩니다.

0

예, OR 연산자가 있기 때문에 가능합니다.

0

첫 번째 것이 TRUE를 반환하면 if가 성공합니다. 첫 번째 것이 FALSE를 반환하면 OR 다음에 파트를 실행하고 숫자가 정확하고 함수가 TRUE를 반환하면 성공합니다.

어쨌든 나는 네 그것이이

if (!empty($data[70]) or ((int)$data[29] == 7135556666 and isLongDistance($data[8])) 
+0

$ data [70] = '0'이면 empty()가 true로 평가됩니다. 아마도 그의 응용 프로그램은 그 값을 유효한 값으로 간주해야하므로 strlen()을 사용해야합니다. remove19는 중요한 작업을 수행 중일 수 있으므로 제거하지 않아야합니다. 또한 $ data [29]를 int로 캐스팅하면 7135556666.43이 포함될 때 true가됩니다. 아마도 그는 거짓으로 평가하기 위해 그러한 가치가 필요할지도 모릅니다. 우리는 모른다. 또한, phill은 다음과 같은 사실을 알고 있어야합니다. 및 &&는 "or"및 "and"와는 다른 연산자 우선 순위를 가지며 긴 조건문에서 훨씬 더 읽기 쉽습니다. – webbiedave

0

처럼 덮어 쓸 것입니다. 그러나 실제로 인간이 이해할 수있는 코드를 작성하는 것을 이해하려면 컴퓨터 용 코드를 작성하지 마십시오.

이 간단한 버전을 고려하십시오.

$dataLenght = strlen($data[70]); 
$remove19  = remove19((trim($data[29]); 
$longDistance = isLongDistance($data[8]); 


if ($dataLenght > 0) // your first OR if false it would goto elseif statement 
{ 
    //condition 
} 

elseif($remove19 == '7135556666' && $longDistance) // your second statement 
{ 
    //conditon 

} 
관련 문제