Return 语句在 php 中不起作用,尽管值仍然存在,返回时变量仍然为 null

function get_string_between($string, $start, $end, $preo) {

    if (strpos($string,$start)===FALSE) {    

        return $preo;

    } else {

        if (strlen($string)!==0) {

            $ini   = strpos($string, $start);        

            $pre   = substr($string,0,$ini);

            $ini   += strlen($start);

            $len   = strpos($string, $end, $ini) - $ini;

            $part  = chr(substr($string, $ini, $len));

            $preo .= $pre;

            $preo .= $part;

            $newString = substr($string, strlen($pre) + strlen(substr($string,$len)) + strlen($start) + strlen($end), strlen($string)-strlen($pre));

            get_string_between($newString,$start,$end,$preo);

        } 

    }  

}


$rr = get_string_between("vishalOo59oOOo59oO", 'Oo', 'oO', '');

var_dump($rr);           

上面的程序正在返回null。


慕神8447489
浏览 170回答 2
2回答

慕少森

您不会返回else块中的任何内容。因此,如果条件是,false则返回值将是null。从块中的递归调用返回else:return get_string_between($newString,$start,$end,$preo);

慕工程0101907

function get_string_between($string, $start, $end, $preo) {    if (strpos($string,$start)===FALSE) {            return $preo;    } else {        if (strlen($string)!==0) {            $ini   = strpos($string, $start);                    $pre   = substr($string,0,$ini);            $ini   += strlen($start);            $len   = strpos($string, $end, $ini) - $ini;            $part  = chr(substr($string, $ini, $len));            $preo .= $pre;            $preo .= $part;            $newString = substr($string, strlen($pre) + strlen(substr($string,$len)) + strlen($start) + strlen($end), strlen($string)-strlen($pre));            get_string_between($newString,$start,$end,$preo);        }     }  }$rr = get_string_between("vishalOo59oOOo59oO", 'Oo', 'oO', '');var_dump($rr);           上面的程序正在返回null。
打开App,查看更多内容
随时随地看视频慕课网APP