2011-09-30 12 views
0

아래 코드에서이 작업을 수행 할 수 있습니까? 내가 본 문제점은 else 절에 두 개의 문장이 있다는 것이고 에코에 적합한 방법을 찾을 수 없다는 것입니다. 1이나 0을 반환해야합니다. 아마도 누군가 트릭을 알고 있습니까?3 진 연산자로 단순화하는 경우

function empty_user($c)  
    { 
    if((int)!in_array('',$this->a,TRUE)) 
     { 
     return 1; 
     } 
    else 
     { 
     echo $c; 
     return 0; 
     } 
    } 

답변

3

아니요 ternary = /. 일단 함수가 반환되면 어쨌든 함수 해석이 중지되므로 다른 것을 제거 할 수 있으므로이 작업을 훨씬 단순화 할 수 있습니다.

function empty_user($c) { 
    if ((int)!in_array('',$this->a,TRUE)) return 1; 
    echo $c; 
    return 0; 
} 
+0

고맙습니다 ... 아주 좋은 .... 당신이 생각하는 파싱을 해석하는 것을 의미합니다. –

+0

오, 네가 맞아! –

3

당신은 일반적으로 실행 순서를 결정하는 삼항 연산자를 사용하지 말아야뿐만 아니라, 아니, 당신은 당신이 거기있어/다른 경우를 변환 할 수 없습니다.

3

두 블록에서 둘 이상의 연산을 원할 경우 삼항 연산자를 사용할 수 없지만 원하는 이유는 무엇입니까? 코드를 계속 추가 할 수있는 전체 블록이 있으면 훨씬 더 명확하고 쉽게 업데이트 할 수 있습니다.

+0

현재 코드를 추가하고 있지 않습니다. 저는 가독성과 간결함을 위해 최적화되었습니다. –

+1

@ChrisAaker 더 읽기 쉬운 논쟁의 여지가 있습니다. 그러나 삼항 연산자는 약간 간결합니다. –

1

in_array는 if 문에 가장 적합한 bool을 반환합니다. int로 캐스팅 할 필요가 없습니다.

function empty_user($c)  
    { 
     if (in_array('',$this->a,TRUE)) 
     { 
      echo $c; 
      return 0; 
     } 

     return 1; 
    } 
+0

나는 다음과 같은 && 문에서 사용되는 다른 함수와의 일관성을 위해 int로 캐스팅합니다. f1() && f2() && f3() –

관련 문제