繁体   English   中英

回声有效,但返回不在PHP函数中

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM