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返回的时候,没返回一下,前者就又执行一下。