クラスメソッドの戻り値、不思議な現象
親愛なる皆さん、次のコードを見てください:
私が実装したい関数は、多次元配列を使用してツリー構造を出力することです。以下のパラメーターは多次元配列です。
//再帰ツリー出力形式1
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行目のreturnを継承しません
9行目の$ this- >accountTreeType1 は 14 行目のリターンを受け入れません
では、なぜエコー時に出力できるのでしょうか?
このメソッドはどのように呼び出すのでしょうか?
関数が戻った後は、メソッドの実行が終了したことを意味し、後続のコードは実行されません。
$str = D('Account')->accountTreeType1($Data);
メソッドの最後に
return $this->strLable; を追加します
1. strLable はクラスで定義されていますか?
3. もちろん、echo は出力できます。再帰関数が何なのか理解していませんか?
追加後は戻り値があります。しかし、なぜこのように書かれているのかはよくわかりません。 public counttreetype1($ arrdata){&gt; ;/ul>ただ、いつ戻ればいいのか分かりません。そして、メソッドの最後に return を追加すると、それは再帰的となり、呼び出されるたびに戻りますよね?
$val[id]、id とは何ですか? $id または "id" である必要があります...したがって、$this->strLabel はまったく返されません
return は、実際に現在の関数を数回呼び出したところです。再帰を理解していない
理解したほうがいいです
return back continue と recursion
public function accountTreeType1($arrData){
_array($val['child'] ) {
$ this- & gt;
このメソッドはすべての値を返すことはできません
$ ardata を出力します
配列
(
[1] => 配列
(
[id] => 1
[acc_code] => 1001
[acc_name] => 库存现金
[acc_level] => 1
[acc_detail ] => 0
[acc_parent_id] => 0
1
1
[子] => 配列
(
[38] => 配列
(
[id] =&gt; [acc_root_id] => 1
[acc_state] => 1
[子] => (
[39] => 配列
(
[id] => 39
[acc_code] => 10010101
[acc_name] => 詹军涛
[acc_level] => 3
[acc_detail] => 0
[acc_parent_id] => 38
[acc_root_id] => 1
[acc_state] => 1
[子] => 配列
(
[804] =&gt; array
(
[id] =&gt;804
[acc_code] =&gt; 1001010101
[acc_name] =&gt;fdsaf
[acc_level] =&gt; 4
[acc_detail] => 1
[acc_parent_id] => 39
[acc_root_id] => 1
[acc_state] => 1
)
)
)
[40] => array
(
[id] =&gt;40
[acc_code] =&gt; 10010102 38
[acc_root_id] => 1
[acc_state] => 1
)
[41] => array
(
[id] =&gt; 41
[acc_code] =&gt; 10010103
[acc_name] =&gt;吴雪吴雪如如如如[acc_level] =&gt; 3 38
[acc_root_id] => 1
[acc _state] => 1
)
[42] => 配列
(
[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] =&gt;43
[acc_code] =&gt; 10010105 ; 38
[acc_root_id] => 1
[acc_state] => 1
)
[44] => array
(
[id] =&gt; 44
[acc_code] =&gt; 10010106
[acc_name] =&gt; 38
[acc_root_id] => 1
[acc _state] => 1
)
[45] => 配列
(
[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] =&gt; 46
[acc_code] =&gt;10010108
[acc_name] =&gt;陈镇江陈镇江
陈镇江[acc_level] =&gt; 3
[acc_detail] =&gt; 1
[acc_parent_id] =&gt ; 38
[acc_root_id] => 1
[acc_state] => 1
)
[789] => array
(
[id] =&gt; 789
[acc_code] =&gt; 435435 38
[acc_root_id] => 1
[acc _state] => 1
)
)
)
[47] => 配列
(
[id] => 47
[acc_code] => 100102
[acc_name] => 广州现钞
[acc_level] => 2
[acc_detail] => 0
[acc_parent_id] => 1
[acc_root_id] => 1
[acc_state] => 1
[子供] => array
(
[48] =&gt; array
(
[id] =&gt;48
[acc_code] =&gt; 10010201
[acc_name] =&gt;吴昆伦吴昆伦吴昆伦
> 1
[acc_parent_id] => 47
[acc_root_id] => 1
[acc_state] => 1
)
)
)
)
)
)
public function accountTreeType1($arrData){
- '; foreach($ arrdata as $ val){
- '.$val['acc_code'].$val['acc_name'].' ';
if(is_array($ val ['child'])){
$ strlable。= '&lt; li&gt;'。$ val ['acc_code']。$ val ['acc_name '].'';
$strLable .= $this->accountTreeType1($val['child']);
}else{
$strLable .= '
}
}
return $strLable.'
}
public function accountTreeType1($arrData){
$strLable .= '
- '; foreach($arrData as $val){
- これは実現可能です。谢你们,我有点明白,我错在哪了。
if(is_array($val['child'])){
$strLable .= '

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。
