• 技术文章 >后端开发 >php教程

    类方法返回值,奇怪的现象

    2016-06-23 14:02:11原创692

    各位大侠,请看如下代码:
    我要实现的功能是,利用一个多维数组输出一个树状结构,下面的参数是多维数组。

    //递归树状输出格式一

    	public function accountTreeType1($arrData){		$this->strLable = $this->strLable.'
      '; foreach($arrData as $val){ if(is_array($val['child'])){ $this->strLable = $this->strLable.'
    • '.$val['acc_code'].$val['acc_name']; $this->accountTreeType1($val['child']); }else{ $this->strLable = $this->strLable.'
    • '.$val['acc_code'].$val['acc_name'].'
    • '; if($val[id]=='最后一个ID'){ return $this->strLable; //在这里没有返回值,不过用echo $this->strLable;是可以打印出来,但是返回值为空。 } } } $this->strLable = $this->strLable.'
    '; }


    回复讨论(解决方案)

    第 9 行的 $this->accountTreeType1 没有承接第 14 行的返回

    第 9 行的 $this->accountTreeType1 没有承接第 14 行的返回

    那为什么echo 时,能打印呢

    你是如何调用这个方法的?

    function return了之后表示该方法已经运行完了,后面的代码都不会执行了。

    $str = D('Account')->accountTreeType1($Data);

    方法的最后加上
    return $this->strLable;

    1、class 里strLable定义了没?
    2、return了 你不接收返回值你是要做什么?
    3、echo 当然可以输出,你是不是没搞清楚什么是递归函数?

    加了之后,有返回值了。但是不是很理解为什么这样写。

    public function accountTreeType1($arrData){
    $strLable .= '

    ';
    }

    你都不return 怎么获取值

    你都不return 怎么获取值

    我刚刚代码有return。只是搞不明白,什么时候return。而且在方法最后面加return,那它递归,每次调用都会return不是吗?

    $val[id],id是什么?应该是$id或者"id"吧...所以根本不会返回$this->strLabel

    return 是跳出当前方法 你刚才其实调用了当前function好几次 你递归没搞懂
    你最好搞懂
    return back continue 和递归

    public function accountTreeType1($arrData){
    $strLable .= '

    相关文章推荐

    • PHP+Socket系列之实现websocket聊天室• PHP+Socket系列之IO多路复用及实现web服务器• PHP+Socket系列之实现客户端与服务端数据传输• PHP socket学习:带你做个简单的socket服务器• 一文详解PHP用流方式实现下载文件(附代码示例)
    1/1

    PHP中文网