2009-12-03 1 views
2

함수에서 반환 할 내용을 if 문을 사용하여 확인하지만 원하는대로 작동하지 않는 것 같습니다. (즉, 도움이된다면) 함수를 결정하는 데 if 문 문제가 발생했습니다.

function DoThis($dogs, $cats){ 
// do something with dogs, pet them perhaps. 

$reg = $dogs[0]; 
$nate = $dogs[1]; 

if($cats = "dave"){return $reg;} 
if($cats = "tom"){return $nate;} 

} 

$cats

는 문자열이며, 입력 할 때 어떤 수익을 얻을하지 않습니다. 내가 수동으로 반환을 설정하면, 그 작동하지만 위의 어떤 이유로 든 않습니다.

답변

6

동등 함을 테스트하려면 = (단일 같음) 연산자 대신 == (double equals) 연산자를 사용하십시오. 예를 들어

: 당신은 할당 연산자 대신 비교 연산자를 사용하고

if("dave" == $cats){return $reg;} 
if("tom" == $cats){return $nate;} 
+1

변수를 오른쪽에 쓰면 a =를 잊어 버리면 구문 분석 오류가 발생합니다. 예 : 'if ('dave'== $ cats) {' – VolkerK

+0

전화가 잘되었으므로 방금 내 대답을 업데이트했습니다. 이것은 if 스타일의 모든 예가 항상 다른 방향으로 나타나는 것을 볼 수 있지만, 습관에 들어가면 훌륭한 스타일입니다 ... –

6

. 대신 다음을 시도하십시오.

$cats == "dave" 
$cats == "tom" 

당신은 변수 $ 고양이 후 사실이라면

if($cats = "dave") { ... } 

은 당신이 정말로

  1. 변수 $ 고양이
  2. 에 값 "데이브"를 할당 말을하는지 말할 때 할당, true를 반환합니다. 그렇지 않으면 거짓을 반환합니다.

일반적인 실수이며 오래된 손과 새 손을 똑같이 괴롭 히고 있습니다.

2

==를 사용해야 비교할 수 있습니다.

=는 할당이므로 $ cats를 "dave"로 설정 한 다음 표현식이 "dave"로 평가되므로 비어 있지 않으므로 if 문을 "if (true) ... "그리고 포함 된 코드를 실행합니다.