<?php
set_time_limit(0);
$string = '0123456789abcdefghijklmnopqrstuvwxyz';
$length = strlen($string);
function makeDir($param)
{
if(!file_exists($param)) {
makeDir(dirname($param));
mkdir($param);
}
}
for($i = 0; $i < $length; $i++) {
for($j = 0; $j < $length; $j++) {
for($k = 0; $k < $length; $k++) {
makeDir($string[$i].'/'.$string[$j].'/'.$string[$k]);
}
}
}
?>----------------
以上程序为建立各级目录的文件所用。
---------------测试通过的。
function makeDir($param)
{
if(!file_exists($param)) {
makeDir(dirname($param));/*这里不明白,这个函数是怎么执行的。在c++ 里面 类的定义的话是构造函数,但是这里不是类的定义。怎么可以出现函数的嵌套执行的?????????????*/ mkdir($param);
}
}
这个函数: makeDir(dirname($param));
--------------------------
提问在注析里面了。
--------------------------
set_time_limit(0);
$string = '0123456789abcdefghijklmnopqrstuvwxyz';
$length = strlen($string);
function makeDir($param)
{
if(!file_exists($param)) {
makeDir(dirname($param));
mkdir($param);
}
}
for($i = 0; $i < $length; $i++) {
for($j = 0; $j < $length; $j++) {
for($k = 0; $k < $length; $k++) {
makeDir($string[$i].'/'.$string[$j].'/'.$string[$k]);
}
}
}
?>----------------
以上程序为建立各级目录的文件所用。
---------------测试通过的。
function makeDir($param)
{
if(!file_exists($param)) {
makeDir(dirname($param));/*这里不明白,这个函数是怎么执行的。在c++ 里面 类的定义的话是构造函数,但是这里不是类的定义。怎么可以出现函数的嵌套执行的?????????????*/ mkdir($param);
}
}
这个函数: makeDir(dirname($param));
--------------------------
提问在注析里面了。
--------------------------
如果存在这个目录就返回了 假设这个目录不存在
就在函数中调用 makedir(第二次调用) 参数为 1/2 因为dirname(1/2/3) = 1/2
进入makedir后 再次判断 1/2是不是存在 假设不存在 再调用makedir(第三次调用) 判断 目录1是不是存在 假设存在 函数返回此时第三次调用结束 返回第二次调用创建1/2这个目录 函数返回到第一次调用 创建1/2/3目录
set_time_limit(0);
//$string = '0123456789abcdefghijklmnopqrstuvwxyz';
$string = '012';
$length = strlen($string);
function makeDir($param)
{
if(!file_exists($param)) {
makeDir(dirname($param));
echo $param."<br><br><br><br>";
}
}
for($i = 0; $i < $length; $i++) {
for($j = 0; $j < $length; $j++) {
for($k = 0; $k < $length; $k++) {
makeDir($string[$i].'/'.$string[$j].'/'.$string[$k]);
}
}
}
?>修改 mkdir($param);为以下 : echo $param."<br><br><br><br>";
显示输出的开始一部分为:
00/00/0/000/00/0/100/00/0/200/10/1/000/10/1/1
以传入参数 1/2为例function makeDir(1/2)
{
if(!file_exists(1/2)) {
makeDir(dirname(1/2));
mkdir(1/2);
}
} 代入makeDir函数后
function makeDir(1/2)
{
if(!file_exists(1/2) {
function makeDir(1) <--因为dirname(1/2/3) = 1/2
{
if(!file_exists(1)) {
makeDir(dirname(1));
mkdir(1);
}
}
mkdir(1/2);
}
} 再代入 makeDir函数变成function makeDir(1/2)
{
if(!file_exists(1/2) { <--目录1/2不存在
function makeDir(1) <--因为dirname(1/2/3) = 1/2
{
if(!file_exists(1)) { <--目录1不存在 function makeDir(.) <--因为dirname(1) = .
{
if(!file_exists(.)) { <--这里是判断根目录是不是存在,结果是根目录存在,所以跳过了if段里面当然语句
makeDir(dirname(.)); <--这里和下面两句都没有执行
mkdir(.);
}
} <--函数返回了
mkdir(1); <--开始创建第一个目录 1
}
}
mkdir(1/2); <--开始创建第二层目录 1/2
}
}
应该是dirname(1/2) = 1本来想以三层目录为例 后来想想两层应该也能让你理解了
因为dirname(1/2/3) = 1/2
应该是dirname(1/2) = 1
-------------------
1 这个目录仍然不存在,于是继续往下:
-------------------那么 dirname(1)= .
./ 为当前目录那么就执行: makeDir(.)。按照 这种思路我一定是错了的但是我怎么理解好啊
function makedir($param)if 文件不存在就向下执行:0/0/0)
function makedir($param)if 文件不存在就向下执行:把 0/0/0 最后的0和 /去掉,然后:执行mkdir(0/0);这样的话,那么先执行的应该是 0/0。--------------------
而 mkdir 改为 echo 显示的确是 0 再到 00 再到 000
--------------------而且0/0/0应该是一直都不会被执行的,因为总被 dirname 去掉了: /0
注:按照这个函数:0/0/0 该是第一个传入的参数
{
if(!file_exists($param)) {
makeDir(dirname($param)); <--这里的dirname($param); 不会改变$param的值 只是把dirname($param); 的值作为另外一个参数 传给 下面一层的makeDir函数 每一层的参数是不互相影响的
mkdir($param);
}
}
{
if(!file_exists($param)) {
makeDir(dirname($param)); <--这里的dirname($param); 不会改变$param的值 只是把dirname($param); 的值作为另外一个参数 传给 下面一层的makeDir函数 每一层的参数是不互相影响的
mkdir($param);
}
}
“dirname() mkdir() 是php自带的函数,相关信息查查手册”
怎么问非所答的啊,,,不会是大脑烧坏了吧。