本帖最后由 iamsai 于 2013-09-28 14:04:34 编辑

解决方案 »

  1.   

    函数无论是否 return 语句,都会在函数执行完之后,继续执行调用函数的程序
      

  2.   

    你想达到你的要求应该改成:
    <?php
     
        reverse_i('hello');
     
       function reverse_i($str)
    {
       
      if(strlen($str)>0) { 
      reverse_i(substr($str,1)); 
    }else{//加上else不然还是会打印出来的
     echo substr($str,0,1); 
    //return
    }
      
    }
    你的理解有问题的,按你的方法最后的echo还是会被执行的
      

  3.   

    很明显是要输出的呀。。
    你的程序可以看成这样
    $str=123;
    if(strlen('123')>0)    
     
        //reverse_i('23'); 
          if(strlen('23')>0){
             //reverse_i('3'); 
                   if(strlen('3')>0){
                     //reverse_i(''); 不合,然后执行后面语句
                   echo substr('3',0,1);//输出3
    }
            echo substr('23',0,1);//输出2
    }
     
    echo substr('123',0,1);//输出1
      

  4.   

    你想达到你的要求应该改成:
    <?php
     
        reverse_i('hello');
     
       function reverse_i($str)
    {
       
      if(strlen($str)>0) { 
      reverse_i(substr($str,1)); 
    }else{//加上else不然还是会打印出来的
     echo substr($str,0,1); 
    //return
    }
      
    }
    你的理解有问题的,按你的方法最后的echo还是会被执行的
      

  5.   

    如果把你程序转换为if,大概流程是这样的<?php
    if(strlen('hello')>0){
    if(strlen('hello')>0){
    if(strlen('llo')>0){
    if(strlen('lo')>0){
    if(strlen('o')>0){
    if(strlen('')>0){//你以为只输出这个空的,其实前面的也都有执行
    echo substr('',0,1);
    }
    echo substr('o',0,1);
    }
    echo substr('lo',0,1);
    }
    echo substr('llo',0,1);
    }
    echo substr('ello',0,1);
    }
    echo substr('hello',0,1);//都会被执行
    }
    ?>
      

  6.   

    是吗?<?php
    $str='hello';function reverse_i($str,$o_str =''){ $str = substr($str, 1);
    $o_str .= $str.'<br>';
    strlen($str) > 0 && $o_str = reverse_i($str,$o_str);
    return $o_str;
     }echo reverse_i($str);