我有一个默认情况下会返回引用值的函数-但是,如果在处理函数中的内容时出错,则该函数应返回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不是合法值而不是OK,那么您应该以其他方式实现find函数.
例如,这种方式:
function find($idx, & $found_value, $pref_array = false) {
// pseudocode
if found:
$found_value = $array[$idx]
return true
else:
return false
}
这样,您始终可以通过检查从函数返回的值来知道是否找到了所请求的项目,并且如果返回的值为TRUE,则可以在$found_value参数所引用的变量中对找到的项目进行引用.
最后,这样您就不会收到任何奇怪的通知了;)
标签:php,function
来源: https://codeday.me/bug/20191105/1998430.html