类方法返回值,奇怪的现象 本帖最后由 xuzuning 于 2013-03-08 14:59:52 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 第 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 .= '<ul>'; foreach($arrData as $val){ if(is_array($val['child'])){ $this->accountTreeType1($val['child']); }else{ $strLable .= '<li>'.$val['acc_code'].$val['acc_name'].'</li>'; } } return $strLable.'</ul>'; } 我刚刚代码有return。只是搞不明白,什么时候return。而且在方法最后面加return,那它递归,每次调用都会return不是吗? $val[id],id是什么?应该是$id或者"id"吧...所以根本不会返回$this->strLabel return 是跳出当前方法 你刚才其实调用了当前function好几次 你递归没搞懂你最好搞懂 return back continue 和递归 Array( [1] => Array ( [id] => 1 [acc_code] => 1001 [acc_name] => 库存现金 [acc_level] => 1 [acc_detail] => 0 [acc_parent_id] => 0 [acc_root_id] => 1 [acc_state] => 1 [child] => Array ( [38] => Array ( [id] => 38 [acc_code] => 100101 [acc_name] => 深圳现钞 [acc_level] => 2 [acc_detail] => 0 [acc_parent_id] => 1 [acc_root_id] => 1 [acc_state] => 1 [child] => Array ( [39] => Array ( [id] => 39 [acc_code] => 10010101 [acc_name] => 詹军涛 [acc_level] => 3 [acc_detail] => 0 [acc_parent_id] => 38 [acc_root_id] => 1 [acc_state] => 1 [child] => Array ( [804] => Array ( [id] => 804 [acc_code] => 1001010101 [acc_name] => fdsaf [acc_level] => 4 [acc_detail] => 1 [acc_parent_id] => 39 [acc_root_id] => 1 [acc_state] => 1 ) ) ) [40] => Array ( [id] => 40 [acc_code] => 10010102 [acc_name] => 林全茂 [acc_level] => 3 [acc_detail] => 1 [acc_parent_id] => 38 [acc_root_id] => 1 [acc_state] => 1 ) [41] => Array ( [id] => 41 [acc_code] => 10010103 [acc_name] => 吴雪如 [acc_level] => 3 [acc_detail] => 1 [acc_parent_id] => 38 [acc_root_id] => 1 [acc_state] => 1 ) [42] => Array ( [id] => 42 [acc_code] => 10010104 [acc_name] => 关蓉 [acc_level] => 3 [acc_detail] => 1 [acc_parent_id] => 38 [acc_root_id] => 1 [acc_state] => 1 ) [43] => Array ( [id] => 43 [acc_code] => 10010105 [acc_name] => 胡振明 [acc_level] => 3 [acc_detail] => 1 [acc_parent_id] => 38 [acc_root_id] => 1 [acc_state] => 1 ) [44] => Array ( [id] => 44 [acc_code] => 10010106 [acc_name] => 黄锦雄 [acc_level] => 3 [acc_detail] => 1 [acc_parent_id] => 38 [acc_root_id] => 1 [acc_state] => 1 ) [45] => Array ( [id] => 45 [acc_code] => 10010107 [acc_name] => 陈培怀 [acc_level] => 3 [acc_detail] => 1 [acc_parent_id] => 38 [acc_root_id] => 1 [acc_state] => 1 ) [46] => Array ( [id] => 46 [acc_code] => 10010108 [acc_name] => 陈镇江 [acc_level] => 3 [acc_detail] => 1 [acc_parent_id] => 38 [acc_root_id] => 1 [acc_state] => 1 ) [789] => Array ( [id] => 789 [acc_code] => 435435 [acc_name] => fdsaf [acc_level] => 3 [acc_detail] => 1 [acc_parent_id] => 38 [acc_root_id] => 1 [acc_state] => 1 ) ) ) [47] => Array ( [id] => 47 [acc_code] => 100102 [acc_name] => 广州现钞 [acc_level] => 2 [acc_detail] => 0 [acc_parent_id] => 1 [acc_root_id] => 1 [acc_state] => 1 [child] => Array ( [48] => Array ( [id] => 48 [acc_code] => 10010201 [acc_name] => 吴昆伦 [acc_level] => 3 [acc_detail] => 1 [acc_parent_id] => 47 [acc_root_id] => 1 [acc_state] => 1 ) ) ) ) )) public function accountTreeType1($arrData){ $strLable .= '<ul>'; foreach($arrData as $val){ if(is_array($val['child'])){ $strLable .= '<li>'.$val['acc_code'].$val['acc_name'].'</li>'; $strLable .= $this->accountTreeType1($val['child']); }else{ $strLable .= '<li>'.$val['acc_code'].$val['acc_name'].'</li>'; } } return $strLable.'</ul>'; } 求代码 关于一个运算符的小问题! 请教个基本问题 数据库中的数组元素无法被成功赋值?谢谢了 请教!我是用php在dreanweaver下做的设计。 问个很傻的问题 php怎么像asp那样用<!--#include file="xxx.asp"--!>这样调用页面啊 急。。GD库将gif生成jpg缩略图的问题。。 一个简单的正则问题 大家注意,请教一个问题!谢谢大家! 遇到safe_mode打开怎么办!? php 数组去除重复值 安装XDEBUG成功,分享下,老鸟飞过吧
那为什么echo 时,能打印呢
return $this->strLable;
2、return了 你不接收返回值你是要做什么?
3、echo 当然可以输出,你是不是没搞清楚什么是递归函数?
$strLable .= '<ul>';
foreach($arrData as $val){
if(is_array($val['child'])){
$this->accountTreeType1($val['child']);
}else{
$strLable .= '<li>'.$val['acc_code'].$val['acc_name'].'</li>';
}
}
return $strLable.'</ul>';
}
我刚刚代码有return。只是搞不明白,什么时候return。而且在方法最后面加return,那它递归,每次调用都会return不是吗?
你最好搞懂
return back continue 和递归
(
[1] => Array
(
[id] => 1
[acc_code] => 1001
[acc_name] => 库存现金
[acc_level] => 1
[acc_detail] => 0
[acc_parent_id] => 0
[acc_root_id] => 1
[acc_state] => 1
[child] => Array
(
[38] => Array
(
[id] => 38
[acc_code] => 100101
[acc_name] => 深圳现钞
[acc_level] => 2
[acc_detail] => 0
[acc_parent_id] => 1
[acc_root_id] => 1
[acc_state] => 1
[child] => Array
(
[39] => Array
(
[id] => 39
[acc_code] => 10010101
[acc_name] => 詹军涛
[acc_level] => 3
[acc_detail] => 0
[acc_parent_id] => 38
[acc_root_id] => 1
[acc_state] => 1
[child] => Array
(
[804] => Array
(
[id] => 804
[acc_code] => 1001010101
[acc_name] => fdsaf
[acc_level] => 4
[acc_detail] => 1
[acc_parent_id] => 39
[acc_root_id] => 1
[acc_state] => 1
) ) ) [40] => Array
(
[id] => 40
[acc_code] => 10010102
[acc_name] => 林全茂
[acc_level] => 3
[acc_detail] => 1
[acc_parent_id] => 38
[acc_root_id] => 1
[acc_state] => 1
) [41] => Array
(
[id] => 41
[acc_code] => 10010103
[acc_name] => 吴雪如
[acc_level] => 3
[acc_detail] => 1
[acc_parent_id] => 38
[acc_root_id] => 1
[acc_state] => 1
) [42] => Array
(
[id] => 42
[acc_code] => 10010104
[acc_name] => 关蓉
[acc_level] => 3
[acc_detail] => 1
[acc_parent_id] => 38
[acc_root_id] => 1
[acc_state] => 1
) [43] => Array
(
[id] => 43
[acc_code] => 10010105
[acc_name] => 胡振明
[acc_level] => 3
[acc_detail] => 1
[acc_parent_id] => 38
[acc_root_id] => 1
[acc_state] => 1
) [44] => Array
(
[id] => 44
[acc_code] => 10010106
[acc_name] => 黄锦雄
[acc_level] => 3
[acc_detail] => 1
[acc_parent_id] => 38
[acc_root_id] => 1
[acc_state] => 1
) [45] => Array
(
[id] => 45
[acc_code] => 10010107
[acc_name] => 陈培怀
[acc_level] => 3
[acc_detail] => 1
[acc_parent_id] => 38
[acc_root_id] => 1
[acc_state] => 1
) [46] => Array
(
[id] => 46
[acc_code] => 10010108
[acc_name] => 陈镇江
[acc_level] => 3
[acc_detail] => 1
[acc_parent_id] => 38
[acc_root_id] => 1
[acc_state] => 1
) [789] => Array
(
[id] => 789
[acc_code] => 435435
[acc_name] => fdsaf
[acc_level] => 3
[acc_detail] => 1
[acc_parent_id] => 38
[acc_root_id] => 1
[acc_state] => 1
) ) ) [47] => Array
(
[id] => 47
[acc_code] => 100102
[acc_name] => 广州现钞
[acc_level] => 2
[acc_detail] => 0
[acc_parent_id] => 1
[acc_root_id] => 1
[acc_state] => 1
[child] => Array
(
[48] => Array
(
[id] => 48
[acc_code] => 10010201
[acc_name] => 吴昆伦
[acc_level] => 3
[acc_detail] => 1
[acc_parent_id] => 47
[acc_root_id] => 1
[acc_state] => 1
) ) ) ) )
)
$strLable .= '<ul>';
foreach($arrData as $val){
if(is_array($val['child'])){
$strLable .= '<li>'.$val['acc_code'].$val['acc_name'].'</li>';
$strLable .= $this->accountTreeType1($val['child']);
}else{
$strLable .= '<li>'.$val['acc_code'].$val['acc_name'].'</li>';
}
}
return $strLable.'</ul>';
}