2010-08-15 3 views
3

기본적으로 참조 된 값을 반환하는 함수가 있습니다. 그러나 함수의 처리 중에 문제가 발생하면 함수는 false을 반환해야합니다.PHP : 반환 값이 부울 인 참조 함수 - 이상한 고지

이 함수는 다음과 같이 선언됩니다.

function &find($idx, $pref_array = false) { 

    if ($pref_array === false) 
     $pref_array = &$this->preferences; 

    foreach ($pref_array as $key => $data) { 
     if ($key == $idx) { 
      return $pref_array[$idx]; 
     } 
     else if (is_array($data)) { 
      $res = &$this->find($idx, &$pref_array[$key]); 
      if ($res !== false) 
       return $res; 
     } 
    } 

    return false; 
} 

PHP는 "변수 참조 만 참조로 반환되어야합니다."라는 통고를합니다. 내 코드에 $result = false;을 넣고 $result을 반환해야합니까? 그것은 어리석은 일이 될 것입니다.

미리 도움을 주셔서 감사합니다.

+0

어떤 PHP 버전을 사용합니까? –

+0

최신 PHP 5.3.3을 사용 중입니다. – Daniel

답변

4

함수에서 반환 된 FALSE 값이 검색된 항목의 값이 실제로 FALSE인지 여부 또는 검색된 값이 0인지 여부를 판별하는 것이 불가능하기 때문에 일반적인 찾기 기능을 코딩하는 좋은 방법은 아니라고 생각합니다. 항목을 찾을 수 없습니다.

FALSE이 OK보다 적법한 값인 경우, 다른 방법으로 찾기 기능을 구현해야합니다. 예를 들어 이 방법 :

function find($idx, & $found_value, $pref_array = false) { 
    // pseudocode 
    if found: 
    $found_value = $array[$idx] 
    return true 
    else: 
    return false 
} 

요청 된 항목이 반환 값 함수에서와 경우 반환 값을 확인하여 발견 된 경우 당신은 항상 알 수있는이 방법은 당신이 발견 된 항목에 대한 참조에있을 것입니다 TRUE입니다 $found_value 인수로 참조되는 변수

마지막으로,이 방법으로 이상한 알림을받지 못합니다;)

+0

답장을 보내 주셔서 감사합니다. 영리한 대안처럼 보입니다. – Daniel