2008-09-19 2 views
0

의가이 코드 있다고 가정 해 봅시다 :PHP 일 :의 일부를 반환 할 경우() {}

if (md5($_POST[$foo['bar']]) == $somemd5) { 
    doSomethingWith(md5($_POST[$foo['bar']]); 
} 

내가 수행하여 그 아래로 단축 할 수있다 :

$value = md5($_POST[$foo['bar']]; 
if ($value == $somemd5) { 
    doSomethingWith($value); 
} 

을하지만 어떤 사전이 현재의 첫 번째 또는 두 번째 조건을 포함하는 변수를 설정 if? 예 :

if (md5($_POST[$foo['bar']]) == $somemd5) { 
    doSomethingWith($if1); 
} 

불필요한 방법 일 수도 있지만 궁금합니다.

+0

'foo'는 무엇입니까? 오타가 있습니까? '$ foo'를 원하셨습니까? –

+0

@ColeJohnson 당신 말이 맞아요, 나는'$ foo'를 뜻했습니다. – Eikern

답변

7

아니요. 그러나 할당 자체가 표현식이므로 할당을 if 문의 조건식으로 사용할 수 있습니다.

일반적으로
 
if (($value = md5(..)) == $somemd5) { ... } 

하지만, 당신은 조건식에 내장 할당을 피하고 싶은 것 :

  • 코드가 더 중첩 된 괄호, 조밀하고 읽기 때문에 어렵습니다.
  • 같은 표현식에서 =와 ==를 섞으면 방금 섞일 지 묻는 것입니다.
+0

하지만 그렇게하면 아무 것도 얻지 못하며 읽기가 더 복잡해집니다. 몇 가지 바로 가기가 있습니다. 이것은 하나가 아닙니다. –

+0

그래서 나는 이것을하지 말아야, Topbit? – Eikern

+0

나는 이것이 "모범 사례"라고 정확히 동의하지는 않지만, 질문의 마지막 부분에서 "불필요한 ... 나는 궁금합니다."라는 면책 조항을 느꼈으 며 여유를주었습니다. – smo

1

if는 표현식의 결과를 사용하기 때문에이 부분에 액세스 할 수 없습니다. 두 번째 스 니펫에서 작성한 것처럼 함수의 결과를 변수에 저장하면됩니다.

1

IMHO 두 번째 예 (다른 사람이 질문을 편집 할 경우 아래에 인용)는 괜찮습니다. 몇 가지 트릭으로 코드를 가릴 수 있지만, 나에게 이것은 최고입니다. 더 복잡한 경우이 조언은 적용되지 않을 수 있습니다.

$ 값 = MD5 ($ _ POST [foo는 [ '바'];

경우 ($ 값) == $의 somemd5) {

doSomethingWith($value); 

}

관련 문제