各位大侠,请看如下代码:
我要实现的功能是,利用一个多维数组输出一个树状结构,下面的参数是多维数组。
//递归树状输出格式一
public function accountTreeType1($arrData){ $this->strLable = $this->strLable.'<ul>'; foreach($arrData as $val){ if(is_array($val['child'])){ $this->strLable = $this->strLable.'<li>'.$val['acc_code'].$val['acc_name']; $this->accountTreeType1($val['child']); }else{ $this->strLable = $this->strLable.'<li>'.$val['acc_code'].$val['acc_name'].'</li>'; if($val[id]=='最后一个ID'){ return $this->strLable; //在这里没有返回值,不过用echo $this->strLable;是可以打印出来,但是返回值为空。 } } } $this->strLable = $this->strLable.'</ul>'; }
回复讨论(解决方案)
第 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 .= '
- ';
- '.$val['acc_code'].$val['acc_name'].' ';
foreach($arrData as $val){
if(is_array($val['child'])){
$this->accountTreeType1($val['child']);
}else{
$strLable .= '
}
}
return $strLable.'
}
你都不return 怎么获取值
你都不return 怎么获取值
我刚刚代码有return。只是搞不明白,什么时候return。而且在方法最后面加return,那它递归,每次调用都会return不是吗?
$val[id],id是什么?应该是$id或者"id"吧...所以根本不会返回$this->strLabel
return 是跳出当前方法 你刚才其实调用了当前function好几次 你递归没搞懂
你最好搞懂
return back continue 和递归
public function accountTreeType1($arrData){
$strLable .= '
- ';
- '.$val['acc_code'].$val['acc_name'].' ';
- '.$val['acc_code'].$val['acc_name'].' ';
- 这个可以实现。谢谢你们,我有点明白,我错在哪了。
foreach($arrData as $val){
if(is_array($val['child'])){
$this->accountTre……
这个方法不能返回所有的值
$arrData 打印出来看看
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 .= '
- ';
foreach($arrData as $val){
if(is_array($val['child'])){
$strLable .= '
$strLable .= $this->accountTreeType1($val['child']);
}else{
$strLable .= '
}
}
return $strLable.'
}
public function accountTreeType1($arrData){
$strLable .= '
- ';
foreach($arrData as $val){
if(is_array($val['child'])){
$strLable .= '

APHPDependencyInjectionContainerisatoolthatmanagesclassdependencies,enhancingcodemodularity,testability,andmaintainability.Itactsasacentralhubforcreatingandinjectingdependencies,thusreducingtightcouplingandeasingunittesting.

Select DependencyInjection (DI) for large applications, ServiceLocator is suitable for small projects or prototypes. 1) DI improves the testability and modularity of the code through constructor injection. 2) ServiceLocator obtains services through center registration, which is convenient but may lead to an increase in code coupling.

PHPapplicationscanbeoptimizedforspeedandefficiencyby:1)enablingopcacheinphp.ini,2)usingpreparedstatementswithPDOfordatabasequeries,3)replacingloopswitharray_filterandarray_mapfordataprocessing,4)configuringNginxasareverseproxy,5)implementingcachingwi

PHPemailvalidationinvolvesthreesteps:1)Formatvalidationusingregularexpressionstochecktheemailformat;2)DNSvalidationtoensurethedomainhasavalidMXrecord;3)SMTPvalidation,themostthoroughmethod,whichchecksifthemailboxexistsbyconnectingtotheSMTPserver.Impl

TomakePHPapplicationsfaster,followthesesteps:1)UseOpcodeCachinglikeOPcachetostoreprecompiledscriptbytecode.2)MinimizeDatabaseQueriesbyusingquerycachingandefficientindexing.3)LeveragePHP7 Featuresforbettercodeefficiency.4)ImplementCachingStrategiessuc

ToimprovePHPapplicationspeed,followthesesteps:1)EnableopcodecachingwithAPCutoreducescriptexecutiontime.2)ImplementdatabasequerycachingusingPDOtominimizedatabasehits.3)UseHTTP/2tomultiplexrequestsandreduceconnectionoverhead.4)Limitsessionusagebyclosin

Dependency injection (DI) significantly improves the testability of PHP code by explicitly transitive dependencies. 1) DI decoupling classes and specific implementations make testing and maintenance more flexible. 2) Among the three types, the constructor injects explicit expression dependencies to keep the state consistent. 3) Use DI containers to manage complex dependencies to improve code quality and development efficiency.

DatabasequeryoptimizationinPHPinvolvesseveralstrategiestoenhanceperformance.1)Selectonlynecessarycolumnstoreducedatatransfer.2)Useindexingtospeedupdataretrieval.3)Implementquerycachingtostoreresultsoffrequentqueries.4)Utilizepreparedstatementsforeffi


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

SublimeText3 English version
Recommended: Win version, supports code prompts!

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

Dreamweaver CS6
Visual web development tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Mac version
God-level code editing software (SublimeText3)
