!==操作符的问题? !== , ===compares not only the value but also the type. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个是遍历文件的代码中间的一句话搞不懂function TravelDir( $dirURL, $nIndent=0 ) { global $nIndInc; if ($handle = opendir($dirURL)) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { $wholeFileName = $dirURL."/".$file; if (is_dir($wholeFileName)) { PrintFileName($file, $nIndent); TravelDir($wholeFileName,$nIndent+$nIndInc); } else if (is_file($wholeFileName)) { PrintFileName($file, $nIndent); } else { PrintErr($file); } } } }} false !== ($file = readdir($handle))readdir()函数是依次返回文件名,那么!== 是拿false 和一个文件名进行比较么?假如readdir($handle) 函数失败,将返回false,成功将返回文件名!因此$file = readdir($handle)要么是返回文件名,要么是false.false !== ($file = readdir($handle))表示返回文件名时进行操作 "false !== ($file = readdir($handle))表示返回文件名时进行操作"是指如果$file = readdir($handle)是返回false,那么while循环就停止了,如果是文件名就继续循 环是么 ? if ($file != "." && $file != "..") 这句话里的"."和".."是什么意思啊? if ($file != "." && $file != "..") "."和".."是排除,没有这个的话dir出来的有"."和".."两个文件夹! <?php$dirURL = '.'; //base direction, related url$nIndInc = 4; //the num of indent TravelDir($dirURL);function TravelDir( $dirURL, $nIndent=0 ) { global $nIndInc; if ($handle = opendir($dirURL)) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { $wholeFileName = $dirURL."/".$file; if (is_dir($wholeFileName)) { PrintFileName($file, $nIndent); TravelDir($wholeFileName,$nIndent+$nIndInc); } else if (is_file($wholeFileName)) { PrintFileName($file, $nIndent); } else { PrintErr($file); } } } }}function PrintFileName($file, $nIndent) { for( $i=0; $i<$nIndent; $i++ ) echo " "; echo $file; echo "<br>";}function PrintErr($file) { echo "<font color=red>error :</font> {$file}! Maybe the program is something wrong!<br>";}?> 定义这个变量是干吗用的啊 ? $dirURL = '.' ; $nIndInc = 4; $dirURL = '.'指定本php文件所在的文件夹! 1 2 function TravelDir($dirURL, $nIndent=0 ) 3 { 4 global $nIndInc; 5 if ($handle = opendir($dirURL)) { //打开传进来的目录 6 while (false !== ($file = readdir($handle))) { //如果目录可读R来味寥胛募?[0m 7 if ($file != "." && $file != "..") { //如果文件不是 "." 并且不是 ".." 8 $wholeFileName = $dirURL."/".$file; // 9 if (is_dir($wholeFileName)) { //如果读入的文件还是一个目录(目录也可能) --->else line 12 10 PrintFileName($file, $nIndent); //调用PrintFileName函数,打印一些信息,接着 11 TravelDir($wholeFileName,$nIndent+$nIndInc); //进入这个是目录的文件,即此目录继续遍历其下的所有文件 12 } else if (is_file($wholeFileName)) { //如果是文件,而不是目录 13 PrintFileName($file, $nIndent); //则,只打印一些信息,同样的调用PrintFileName函数 14 } else { //否则,其它意外情况,则 15 PrintErr($file); //调用PrintErr函数打印错误信息。 16 } 17 } 18 } 19 } 20 } 21 22 dirURL = '.' ;//遍历的初始目录 $nIndInc = 4;//初始深度 定义这个变量是干吗用的啊 ? $dirURL = '.' ; $nIndInc = 4; $dirURL 为了遍历当前目录 $nIndInc = 4; 输出打印格式用到 filename fileneme filename 分层次而已 这个表达式这样写是很有必要的。因为false存在string和bool两种的可能性。这里它用了 "!=="而没有用"!="是正确的做法,因为返回文件名如果是个string类型的"false"会另这个表达式产生歧异。而用作比较的false是bool类型的。这里用"!=="不仅对值做了判断,还对类型做了判断,就不会造成这种歧异了。 lvlfforever大哥写的很详细啊,谢谢啊...不过现在还没看懂:( 因为false存在string和bool两种的可能性,string 和bool 什么意思? "!="这个比较只比较值,而不比较值的类型,readdir()失败的话会返回一个布尔型(bool)的"false",它这里比较的本意是布尔型的"false".但如果你有一个文件名叫"false",它返回的是一个字符串(string)类型的"false",那么使用"!="就会产生问题了。所以这里用"!=="是正确做法,"!=="不仅会比较返回的值是不是"false",还会比较这两个值的类型是否相等。 ShadowSniper大哥懂了,谢谢 !==类型不一样,也返回 true $wholeFileName = $dirURL."/".$file; $file前面为什么加上$dirURL."/",什么意思啊?大哥帮忙 $dirURL连上'/'再连上$file不就是这个文件的路径嘛,比如test/test.php这是一个相对路径。当有文件要引用这个文件的时候,当然要知道他的路径,光知道名字不知道路径怎么引用。 怎么将包含中、韩文的字符串实体,反转回字符??? php escape乱码问题,求解决 使用.htaccess重定向后无法显示图片,CSS失效 刚安装完的apache进到localhost内想看到目录怎么解决,急 paypal支付跳转的具体代码 服务器有的没打开全局变量auto_global怎么办现在 怎么给多维数组排序? php中,dom解析xml文件,乱码问题 session能注册到变量,但到不到值! 我想实现一个功能,求高手解答下 文件下载问题,急 多项选择框的如何get 多个值?(高人请进)
function TravelDir( $dirURL, $nIndent=0 ) {
global $nIndInc;
if ($handle = opendir($dirURL)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
$wholeFileName = $dirURL."/".$file;
if (is_dir($wholeFileName)) {
PrintFileName($file, $nIndent);
TravelDir($wholeFileName,$nIndent+$nIndInc);
} else if (is_file($wholeFileName)) {
PrintFileName($file, $nIndent);
} else {
PrintErr($file);
}
}
}
}
}
readdir()函数是依次返回文件名,那么!== 是拿false 和一个文件名进行比较么?假如readdir($handle) 函数失败,将返回false,成功将返回文件名!
因此$file = readdir($handle)要么是返回文件名,要么是false.
false !== ($file = readdir($handle))表示返回文件名时进行操作
"false !== ($file = readdir($handle))表示返回文件名时进行操作"是指如果$file = readdir($handle)是返回false,那么while循环就停止了,如果是文件名就继续循 环是么 ? if ($file != "." && $file != "..") 这句话里的"."和".."是什么意思啊?
$nIndInc = 4; //the num of indent
TravelDir($dirURL);function TravelDir( $dirURL, $nIndent=0 ) {
global $nIndInc;
if ($handle = opendir($dirURL)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
$wholeFileName = $dirURL."/".$file;
if (is_dir($wholeFileName)) {
PrintFileName($file, $nIndent);
TravelDir($wholeFileName,$nIndent+$nIndInc);
} else if (is_file($wholeFileName)) {
PrintFileName($file, $nIndent);
} else {
PrintErr($file);
}
}
}
}
}function PrintFileName($file, $nIndent) {
for( $i=0; $i<$nIndent; $i++ ) echo " ";
echo $file;
echo "<br>";
}
function PrintErr($file) {
echo "<font color=red>error :</font> {$file}! Maybe the program is something wrong!<br>";
}
?>
定义这个变量是干吗用的啊 ? $dirURL = '.' ; $nIndInc = 4;
指定本php文件所在的文件夹!
2 function TravelDir($dirURL, $nIndent=0 )
3 {
4 global $nIndInc;
5 if ($handle = opendir($dirURL)) { //打开传进来的目录
6 while (false !== ($file = readdir($handle))) { //如果目录可读R来味寥胛募?[0m
7 if ($file != "." && $file != "..") { //如果文件不是 "." 并且不是 ".."
8 $wholeFileName = $dirURL."/".$file; //
9 if (is_dir($wholeFileName)) { //如果读入的文件还是一个目录(目录也可能) --->else line 12
10 PrintFileName($file, $nIndent); //调用PrintFileName函数,打印一些信息,接着
11 TravelDir($wholeFileName,$nIndent+$nIndInc); //进入这个是目录的文件,即此目录继续遍历其下的所有文件
12 } else if (is_file($wholeFileName)) { //如果是文件,而不是目录
13 PrintFileName($file, $nIndent); //则,只打印一些信息,同样的调用PrintFileName函数
14 } else { //否则,其它意外情况,则
15 PrintErr($file); //调用PrintErr函数打印错误信息。
16 }
17 }
18 }
19 }
20 }
21
22 dirURL = '.' ;//遍历的初始目录
$nIndInc = 4;//初始深度
$dirURL 为了遍历当前目录
$nIndInc = 4; 输出打印格式用到 filename
fileneme
filename
分层次而已