最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP遞歸創(chuàng)建多級(jí)目錄

 更新時(shí)間:2015年11月05日 14:18:03   投稿:lijiao  
本文主要介紹了PHP遞歸創(chuàng)建多級(jí)目錄,這是一道經(jīng)典的php程序員面試題,分享了解題過(guò)程和思路,需要的朋友可以參考一下

我的第一個(gè)感覺(jué)就是用遞歸創(chuàng)建,具體思路如下:

function Directory($dir){
    if(is_dir($dir) || @mkdir($dir,0777)){ //查看目錄是否已經(jīng)存在或嘗試創(chuàng)建,加一個(gè)@抑制符號(hào)是因?yàn)榈谝淮蝿?chuàng)建失敗,會(huì)報(bào)一個(gè)“父目錄不存在”的警告。

        echo $dir."創(chuàng)建成功<br>";  //輸出創(chuàng)建成功的目錄

    }else{

        $dirArr=explode('/',$dir); //當(dāng)子目錄沒(méi)創(chuàng)建成功時(shí),試圖創(chuàng)建父目錄,用explode()函數(shù)以'/'分隔符切割成一個(gè)數(shù)組
        array_pop($dirArr); //將數(shù)組中的最后一項(xiàng)(即子目錄)彈出來(lái),
        $newDir=implode('/',$dirArr); //重新組合成一個(gè)文件夾字符串
        Directory($newDir); //試圖創(chuàng)建父目錄
        if(@mkdir($dir,0777)){
            echo $dir."創(chuàng)建成功<br>";

        } //再次試圖創(chuàng)建子目錄,成功輸出目錄名
    }
}

Directory("A/B/C/D/E/F");

輸出結(jié)果如圖:

 

但是可以看得出來(lái),寫得也太麻煩了,在手冊(cè)里翻看文件函數(shù),看到一個(gè)dirname()函數(shù),其原型如下:

string dirname ( string $path )

給出一個(gè)包含有指向一個(gè)文件的全路徑的字符串,本函數(shù)返回去掉文件名后的目錄名。

在 Windows 中,斜線(/)和反斜線(\)都可以用作目錄分隔符。在其它環(huán)境下是斜線(/)。

可以稍稍地優(yōu)化一下:

function Directory($dir){

    if(is_dir($dir) || @mkdir($dir,0777)){ 

        echo $dir."創(chuàng)建成功<br>";  

    }else{

        Directory(dirname($dir));

        if(@mkdir($dir,0777)){

            echo $dir."創(chuàng)建成功<br>";

        }

    }

}

效果一樣。
之后我在在網(wǎng)上搜一下答案,找到一個(gè)異常精辟的

function Directory( $dir ){  

   return  is_dir ( $dir ) or Directory(dirname( $dir )) and  mkdir ( $dir , 0777);

}

現(xiàn)在來(lái)解釋一下整個(gè)函數(shù):

先介紹一下PHP中邏輯運(yùn)算符的優(yōu)先級(jí)順序:&& > || > and > or,即符號(hào)型>字母型,AND型>OR型,所以函數(shù)體可以看成:

is_dir ( $dir )  or  (Directory(dirname( $dir ))  and   mkdir ( $dir , 0777));

先判斷目標(biāo)目錄是否存在,若存在,依or的短路特性,后面的整體被短路,跳過(guò)執(zhí)行;若目標(biāo)目錄不存在,則執(zhí)行后面的函數(shù)體:

Directory(dirname( $dir ))  and   mkdir ( $dir , 0777)

我考慮了一下先進(jìn)行遞歸的用意:先執(zhí)行遞歸,意在確認(rèn)其父目錄(dirname($dir))都已經(jīng)創(chuàng)建完畢,使后面的mkdir()函數(shù)不會(huì)創(chuàng)建子目錄時(shí)找不到父目錄發(fā)出警告。

進(jìn)入遞歸深處后,確認(rèn)最深處的根目錄存在后,從根目錄向下依次創(chuàng)建目錄。

最后,建議要找工作的親們,去網(wǎng)上找些大公司面試題做一下,畢竟他們考得較為綜合較深,在學(xué)習(xí)知識(shí)的時(shí)候,也刷一下題,另外也一定要做一下,因?yàn)楹苋菀籽鄹呤值?,一開始的函數(shù),我優(yōu)化了好幾遍才能正常使用。

這就是一道PHP遞歸創(chuàng)建多級(jí)目錄面試題目,以后小編會(huì)再找些有意思的面試題跟大家分享。

相關(guān)文章

  • php+AJAX傳送中文會(huì)導(dǎo)致亂碼的問(wèn)題的解決方法

    php+AJAX傳送中文會(huì)導(dǎo)致亂碼的問(wèn)題的解決方法

    關(guān)于在AJAX中GET回的ResponseText中文亂碼的最簡(jiǎn)解決辦法
    2008-09-09
  • PHP文件操作實(shí)例總結(jié)

    PHP文件操作實(shí)例總結(jié)

    這篇文章主要介紹了PHP文件操作,結(jié)合實(shí)例形式總結(jié)分析了php關(guān)于文件讀寫操作的常見(jiàn)函數(shù)及使用技巧,需要的朋友可以參考下
    2016-09-09
  • php構(gòu)造方法中析構(gòu)方法在繼承中的表現(xiàn)

    php構(gòu)造方法中析構(gòu)方法在繼承中的表現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了php構(gòu)造方法中析構(gòu)方法在繼承中的表現(xiàn),感興趣的小伙伴們可以參考一下
    2016-04-04
  • PHP文件與目錄操作示例

    PHP文件與目錄操作示例

    這篇文章主要介紹了PHP文件與目錄操作,涉及php針對(duì)文件與目錄的遍歷、判斷與排序相關(guān)操作技巧,注釋中備有較為詳細(xì)的說(shuō)明,需要的朋友可以參考下
    2016-12-12
  • PHP獲取系統(tǒng)毫秒數(shù)時(shí)間方法

    PHP獲取系統(tǒng)毫秒數(shù)時(shí)間方法

    這篇文章主要介紹了PHP獲取系統(tǒng)毫秒數(shù)時(shí)間方法,php中獲取時(shí)間方法是date(),在php中獲取時(shí)間戳方法有time()、strtotime(),文章通告主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • php Illegal string offset 'name'問(wèn)題及解決

    php Illegal string offset 'name&apo

    這篇文章主要介紹了php Illegal string offset 'name'問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • PHP的時(shí)間戳與具體時(shí)間轉(zhuǎn)化的簡(jiǎn)單實(shí)現(xiàn)

    PHP的時(shí)間戳與具體時(shí)間轉(zhuǎn)化的簡(jiǎn)單實(shí)現(xiàn)

    下面小編就為大家?guī)?lái)一篇PHP的時(shí)間戳與具體時(shí)間轉(zhuǎn)化的簡(jiǎn)單實(shí)現(xiàn)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06
  • PHP入門教程之圖像處理技巧分析

    PHP入門教程之圖像處理技巧分析

    這篇文章主要介紹了PHP入門教程之圖像處理技巧,結(jié)合實(shí)例形式分析了圖形圖像的創(chuàng)建與顯示方法,并附帶了創(chuàng)建圖形驗(yàn)證碼及縮略圖等應(yīng)用的具體示例,需要的朋友可以參考下
    2016-09-09
  • php操作MongoDB類實(shí)例

    php操作MongoDB類實(shí)例

    這篇文章主要介紹了php操作MongoDB類的方法,實(shí)例分析了仿照CI實(shí)現(xiàn)的MongoDB類及其操作技巧,需要的朋友可以參考下
    2015-06-06
  • php中$_REQUEST、$_POST、$_GET的區(qū)別和聯(lián)系小結(jié)

    php中$_REQUEST、$_POST、$_GET的區(qū)別和聯(lián)系小結(jié)

    php中有$_request與$_post、$_get用于接受表單數(shù)據(jù),當(dāng)時(shí)他們有何種區(qū)別,什么時(shí)候用那種最好。
    2011-11-11

最新評(píng)論

新乐市| 舞阳县| 松阳县| 屯昌县| 榆林市| 罗定市| 潼南县| 灵山县| 保靖县| 津市市| 新乡市| 商丘市| 洛宁县| 遂平县| 芦溪县| 砀山县| 太谷县| 德令哈市| 华蓥市| 建水县| 贵南县| 聂拉木县| 越西县| 麟游县| 通城县| 安图县| 福海县| 祁东县| 江源县| 千阳县| 威海市| 论坛| 峨眉山市| 浦城县| 金秀| 张家界市| 磐安县| 黄大仙区| 田东县| 新疆| 于都县|