2016-07-07 3 views
2

PHP가 두 번째 매개 변수의 값을보고 있지 않습니다.PHP 함수가 두 번째 매개 변수의 값을 보지 못합니다.

내 코드 :

PHP 함수 : 함수를 호출

public function getVacs($key, $id = null, $deleted = null, $deleted_key = null) { 

     if(!$id) { 
      $data = $this->_db->getAll('vacatures', $key); 
     } elseif(!empty($deleted)) { 
      $data = $this->_db->getAll('vacatures', $key, $id, $deleted, $deleted_key); 
     } else { 
      $data = $this->_db->getAll('vacatures', $key, $id); 
     } 

     if($data->count()) { 
      $this->_data = $data->results(); 
      $this->_count = $data->count(); 
      return true; 
     } 
    } 

는 :

} elseif(isset($_POST['all'])) { 

     $vacs = $v->getVacs('delete', '0'); 

     echo json_encode($v->data()); 
     exit(); 
    } 

문제는,이 함수는 $id의 값이 표시되지 않습니다.

if이 실행되는 동안 else을 실행해야합니다.

답변

2

문자열에서 "0"false으로 평가됩니다.

이것은 수표 if(!$id)trueid$data에 설정되지 않습니다 당신의 논리에 의해 평가하는 것을 의미합니다. 문자열 "0" 합법적 옵션 인 경우

, 다음 명시 적으로 대신 null 확인 :

if(is_null($id)){ 

이 것

+0

Jup, 나는 다음을 사용했다. if (! is_null ($ id)). 감사! – Chris

+0

@Chris yes'$ id == '0'이 당신이 원하는 것일 때'(if isnull ($ id))'는'true'로 평가 될 것입니까? '$ id'의 값이'null'을 제외하고 첫 번째 블록에 들어가기를 원하지 않는다고 생각했습니다. – Ray

+0

'else '를 첫 번째'if'로 옮겼습니다. 이제는'$ id'가'null '이 아닌지 먼저 검사 할 것입니다. – Chris

1

그것은 $id의 가치를보고있다, 그러나 당신의 문이 설정되어있는 경우 잘못된. 0은 이와 같은 검사에서 false로 평가됩니다. 그래서 당신이 정말로 그것을가 null이 아니다 있는지 확인해야합니다

if($id != null) { 

유효한 ID가없는 경우에만 실행할 경우 첫 번째 싶은 경우에, 당신이 빈 (즉, null가 아닌, 0인지 확인해야 거짓 또는 빈 문자열)을 strict comparison operator (그리고 나는 대부분의 경우에 말할 것입니다) 이러한 경우에 좋은 생각이 될 수도 사용

if(empty($id)) { 
+0

여전히 첫 번째'if'를 실행합니다. – Chris

+0

당신이 찾고있는 답변으로 답변을 업데이트했습니다. – aynber

+0

'if (! empty ($ id))'를 시도했지만 여전히'else'를 실행하지 않았습니다. – Chris

0

: strpos 알과

0 == null; // evaluates to true 
0 === null; // evaluates to false 

유용한 그래서 (0은 haystack 문자열의 위치 0에서 검색된 용어를 의미하고, false는 검색된 용어를 찾을 수 없음을 의미합니다).

관련 문제