Echo工作,但返回不在PHP功能

时间:2015-12-12 17:46:53

标签: php return echo

我有以下功能。它可以在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);
                }
            }
        }
    }
}

我非常感谢能从中得到任何帮助!

2 个答案:

答案 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)