我有以下功能。它可以在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);
}
}
}
}
}
我非常感谢能从中得到任何帮助!
答案 0 :(得分:1)
以递归方式调用方法,并在最深层返回一个值,但是忘记将返回值传递回递归树。
所以改变这个:
self::findKey($key, $item);
由:
$result = self::findKey($key, $item);
if ($result !== false) {
return $result;
}
..并确保在false
循环后找不到密钥时返回forEach
:
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;
}
}
答案 1 :(得分:0)
findKey - 非静态方法。你应该写
public static function findKey($key, $array){}
在foreach循环之前make check是$ array而不是空
此方法仅返回结果,对于打印,您应调用echo ClassName::findKey($key, $array)