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。谢谢你的回答——看起来是个聪明的选择。