那個PHP中號稱最難的‘遞迴函式’

來源:互聯網
上載者:User

標籤:php

昨天處理了一些私事,所以耽擱了一天,好在遞迴函式比較難以理解,所以今天有幸聽了一遍:這個基於回呼函數而存在的函數,的確不太好理解,需要將邏輯上的想法完全梳理通才可以順利書寫,這還是在擁有公式的情況下。

在經理的帶領下,我們做了一個用遞迴函式開啟當前檔案夾,並且讀取檔案夾內所有檔案的一個函數,現將代碼整理如下:

<?php //開啟檔案夾:opendir;// $a = opendir(‘.‘);// //讀取內容:readdir(資源名);// $b = ‘‘;// while(($b = readdir($a)) !== false){// echo $b."<br>";// }// closedir($a); ?> <?php  function digui($path,$n=0){ $a = opendir($path);//讀取內容:readdir(資源名);$b = ‘‘;while(($b = readdir($a)) !== false){if($b == ‘.‘ ||$b == ‘..‘){continue;}echo str_repeat("--", $n);if(is_dir($path."/".$b)){echo "檔案夾".$b,"<br>";//當需要一層層地開啟所有檔案夾之時,因為重複的就是此函數本身,所以使用遞迴。digui($path."/".$b,$n+1);continue;}echo $b."<br>";}closedir($a); } // $a = ‘.‘;digui(".");  ?>

一眼看上去,代碼本身不算難,但中間出了一個困擾許久的問題就是在使遞迴函式自身重複的時候,$n++和$n+1的問題,涉及到了它會怎樣顯示。

還有,continue和break在函數本身不涉及到迴圈時,是不可以使用的,否則會出現致命性錯誤,而die函數則可以在終止函數的同時,停止die命令之後所有的PHP,號稱終極劇毒。

網上所說的“die”和“exit”一個終止代碼且清理緩衝,另一個只終止代碼,純屬謠傳,二者的原始碼一模一樣,只是個別名而已,特此標記出來。

以上。

晚安。

還有,希望經理明天身體恢複健康。

本文出自 “12244243” 部落格,請務必保留此出處http://12254243.blog.51cto.com/12244243/1884884

那個PHP中號稱最難的‘遞迴函式’

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.