PHP – scandir, foreach, is_dir, is_file, nested

近期工餘時間都忙於一個學習專案,因為想出一個自己想做的一個課題,慢慢將佢實現,而從中所學到的會比只看書所學到的會更多(唔洗講都一定要用google),而我依家個學習專案係做一個有前後台的網站,無錯,就係好似wordpress咁有cms,當然我嗰個係超陽春(用wordpress做比喻,我自己都覺得過份咗,哈哈),做到一個可刪除檔案的頁面時又遇到問題,就係點樣可以將folder內的folder(sub-folder)內的檔案都可以找出來刪除呢,而又要去除其中的’.’與’..'(一點與兩點,代表自己directory及上一個directory),搞咗好耐,以下就分享下我嘅做法(這裡用顯示folder 或 file代替):

nested('../../../files/news');   //呼叫 nested 函式

function nested ($arg){   //開始 nested 函式
 $dir = scandir($arg);   //用 scandir() 把指定directory內的folder及file名以arry型式放入 $dir
 foreach ($dir as $value)   //用 foreach() 把array內的元素游走一次
 {
   if(($dir[0] == $value) || ($dir[1] == $value))   //去除 directory 內的 '.'與'..' 自己directory及上一個directory
     continue;
 
   if (is_dir($arg.'/'.$value))   //用 is_dir() 確定是否folder
   {
     echo $arg.'/'.$value." ---- is a folder<br>";   //如是folder,印出
     nested($arg.'/'.$value);   //如是folder,再呼叫函式自己以確定內裡(sub-folder)的是folder或file
   }
   elseif (is_file($arg.'/'.$value))   //用 is_file() 確定是否file
     echo $arg.'/'.$value." ---- is a file<br>";   //如是 file,印出
   else
     echo $arg.'/'.$value." ---- Not file or folder<br>";   //如不是folder或file(仲有咩?),印出
 }
}

當然,上返php官網都有好多勁人post咗好多example上去,但係對我黎講就有啲難理解,以下係相關網站:

PHP官網: http://php.net/manual/en/function.scandir.php

教學網站(簡體): http://www.w3school.com.cn/php/func_directory_scandir.asp

ps. 如果在自己的Linux電腦測試,記得要留意permission問題,即係folder(777,755,…)果啲,要比apache server有寫入權限,而selinux亦都要設定嗰個folder可以被讀寫權限,我都搞咗幾日,以下係我參考的網站:

CentOS 7 + SELinux + PHP + Apache – cannot write/access file no matter what

** 本文同時會張貼在我的google blog:  https://leotseblog.blogspot.com **

 

HTML,Javascript,CSS,小習作

前幾個月都一直在網上自學Python,http://automatetheboringstuff.com/ 都係因為個人比較懶散,所以3~4個月都係睇到第11課,不過都真係獲益不少,又但係之前一直學習的網頁開發進度又慢咗落黎,算喇,Python都係睇到第11課後先放一邊,再來温一温習HTML,一直諗下有啲咩習作可以做一做,等自己記返啲啲啲啲HTML5啲嘢,就做一個用Javascript黎運算bit,byte,kilobyte…的轉換器喇,因為係電腦有時都見到啲用byte黎做單位嘅嘢,咁我心算又計唔到,又懶開個計數機出黎計,咁不如自己做一個轉換器喇(其實以上都係借口黎),作為Javascript練習都幾好呀,咁就用咗1個星期嘅工餘時間黎搞依個頁面,好簡單,以我能力暫時係比到依啲出黎,希望有人見到都覺得有啲啲啲啲用。

個Converter頁面: https://rohole.com/exercise/converter1.html

參考網站:
鳥哥的 Linux 私房菜: http://linux.vbird.org/
Will保哥: http://blog.miniasp.com/post/2010/04/08/unit-information-Bit-Byte-KB-MB-GB-TB-PB-EB-ZB-YB.aspx
W3school: http://www.w3schools.com/default.asp

** 本文同時會張貼在我的google blog:  https://leotseblog.blogspot.com **