̃Gg[͂ĂȃubN}[Nɒlj

PHP :: イディオム / 再帰関数の例



  • 与えられた引数の値を htmlspecialchars して返す
  • 引数の型は string, array どちらでもよい
function sanitize($value)
{
    if(is_array($value)){
        $sanitized_array = array();
        foreach($value as $k => $v){
            $sanitized_array[$k] = sanitize($v);
        }
        return $sanitized_array;
    } else {
        return htmlspecialchars($value);
    }
}



ちなみに、再帰関数とは…

関数の中で自分自身を再帰呼び出し(再帰コール)するという点が通常の関数の挙動と異なる。

再帰関数で重要なポイントは、

『自分自身を呼び出す』

というところに着目されがちだが、同じくらい重要な事として、

『自分自身を常に呼び出すわけではない』

ということだ。

再帰関数は再帰呼び出しを実行する「再帰部分」と、再帰呼び出しを実行しない「基本部分」から成り立つ。

上記例の sanitize関数 でいえば、if内が「再帰部分」で、else内が「基本部分」である。



programming/php/idiom/recursive_function.txt