正月のうちに取り組みたかったこととして再帰関数によるフォルダの読み込みがある。
要はフォルダの読み込みを再起関数でやりたい。
こんなサーバにこんなフォルダ構成があるとして
幸せになろう.mp3
をPHPで読み込むのに、フォルダ階層の都度foreach()を書きたくはないわけで、再帰でフォルダを読み込む関数例えば my_dir_read() を書いて、
my_dir_read("01_Utada_Hikaru",1);
とかやったら、01_Utada_Hikaruをゼロ階層として、1階層目の 01_DeepRiver にあるmp3を一覧してほしいわけだ。
まずは再帰関数に慣れる必要がある。このへん参照。
そのまま実装してテストしてみる。ファイル名は my_recursive01.sh でいいや。
14行目で関数を開始。引数はテキトーに30を突っ込んでみた。
再帰で徐々にカウントダウンして行って
最後はargがゼロになって、9行目で表示され、11行目のtrueで正常終了して終わり。
なんとなく分かった。
まずはPHPでフォルダを一覧化してリンク化してやって
「01_Utada_Hikaru」リンクをクリックしたら、関数 my_dir_read(01_Utada_Hikaru) を呼び出して、その中にあるフォルダをまた一覧してリンク化してやればいいわけだ。
あとで試す。
保存用
<?php
function factorial($args) {
if($args > 0) {
print $args;
print '<br>';
return $args * factorial($args -1);
}
print 'arg:' . "$args";
//return 1; // true
return true;
}
factorial(30);