Php递归函数返回null,而变量有值

rAV*_*AVi 2 php recursion

此函数返回NULL,而$ alias在第二次递归中具有值.在第一次调用时,它返回所需的值,但是如果第一次调用不匹配,则首先在$ alias变量中以可用的值递归所需的值,但它不返回任何内容.

public function checkAlias($fname='',$lname=''){

        if(!empty($fname)){
        $fname = mysql_real_escape_string($fname);
        }
        if(!empty($lname)){
        $lname = mysql_real_escape_string($lname);
        }

    $alias = strtolower($fname).strtolower($lname);
    $sql = "Select ALIAS from table where ALIAS = '$alias'";
    $query = mysql_query($sql);
    $row = mysql_fetch_row($query);
    $string_length = strlen($alias) - 1;
    $result_string = substr($alias,0,$string_length);

    if(!$row){
            print $alias;   // is printing value 
        return $alias;  // but here it returns null
    }else{
        $this->checkAlias($result_string);
        } 
    }
Run Code Online (Sandbox Code Playgroud)

Ger*_*der 6

你忘了返回递归调用的结果:

return $this->checkAlias($result_string);
Run Code Online (Sandbox Code Playgroud)