PHP:通过引用函数,返回值为布尔值–;奇怪的通知

PHP:通过引用函数,返回值为布尔值–;奇怪的通知,php,function,Php,Function,我有一个默认返回引用值的函数–但是,如果在处理函数中的内容时出现问题,该函数应该返回false 函数声明如下 function &find($idx, $pref_array = false) { if ($pref_array === false) $pref_array = &$this->preferences; foreach ($pref_array as $key => $data) { if ($key

我有一个默认返回引用值的函数–但是,如果在处理函数中的内容时出现问题,该函数应该返回
false

函数声明如下

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
?那会有点可笑


提前感谢您的帮助。

我认为这不是编写通用查找函数的好方法,因为无法确定从函数返回的
FALSE
值是否意味着搜索项的值实际上是
FALSE
,或者是否未找到搜索项

如果您知道
FALSE
不是合法的值,那么您应该以不同的方式实现find函数。 例如:

function find($idx, & $found_value, $pref_array = false) {
   // pseudocode
   if found:
     $found_value = $array[$idx]
     return true
   else:
     return false
}
通过这种方式,您可以通过检查函数返回的值始终知道是否找到了请求的项,如果返回的值为TRUE,则您将在
$found\u value
参数引用的变量中引用找到的项


最后,这样你就不会收到任何奇怪的通知;)

你使用的是什么php版本?我使用的是最新的php 5.3.3。谢谢你的回答——看起来是个聪明的选择。