递归

function mk_dir($path) {
    // 第一种情况,$path对应已经存在. 直接return true;
    if(is_dir($path)) {
        return true;
    }

    // 判断$path的父目录存在
    if(is_dir(dirname($path))) {
        return mkdir($path);
    }

    // 如果父目录也不存在,只好调用自己先去创建父目录.
    if(mk_dir(dirname($path))) {
        return mkdir($path);
    } else {
        return false;
    }
}

  假设$path为:zhen/a/b/c,则在if(mk_dir(dirname($path))) {return mkdir($path)中,从最后zhen开始返回,然后返回到前面执行,相当于我向a借钱,a向b借钱,b向c借钱,然后用c返回的时候,没返回一下,前者就又执行一下。

posted @ 2014-10-29 00:12  fengyiqing  阅读(118)  评论(0编辑  收藏  举报