[英]Echo works, but return does not in php function
我有下面的功能。 它可以在return
之前回显结果,但不能返回它(我得到NULL)。
为什么它不起作用,我需要怎么做才能使其起作用?
class Config
{
public static function findKey($key, $array) {
foreach($array as $item) {
if(is_array($item)) {
if(isset($item[$key])) {
return $item[$key];
} else {
self::findKey($key, $item);
}
}
}
}
}
我将不胜感激,对此我将提供任何帮助!
您递归地调用方法,并在最深层返回一个值,但是您忘记了将返回值传递回递归树。
所以改变这个:
self::findKey($key, $item);
通过:
$result = self::findKey($key, $item);
if ($result !== false) {
return $result;
}
..并确保在forEach
循环后找不到密钥时返回false
:
class Config
{
public static function findKey($key, $array) {
foreach($array as $item) {
if(is_array($item)) {
if(isset($item[$key])) {
return $item[$key];
} else {
$result = self::findKey($key, $item);
if ($result !== false) {
return $result;
}
}
}
}
return false;
}
}
findKey-非静态方法。 你应该写
public static function findKey($key, $array){}
在foreach循环之前,使检查为$ array而不为空
此方法仅返回结果,对于打印,应调用echo ClassName::findKey($key, $array)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.