Php 为什么$count没有更新?
我认为这与这一行有关:Php 为什么$count没有更新?,php,readdir,Php,Readdir,我认为这与这一行有关: $dir_handle = @opendir($url) or die("Unable to open $url"); $count = "0"; while ($file = readdir($dir_handle)) { if (!is_dir($url.'/'.$file) && ($file="*.jpg" || $file="*.gif" || $file="*.png") && $file!="pi
$dir_handle = @opendir($url) or die("Unable to open $url");
$count = "0";
while ($file = readdir($dir_handle)) {
if (!is_dir($url.'/'.$file) && ($file="*.jpg" || $file="*.gif" || $file="*.png") && $file!="picture0.*") {
$galleryEventFile[$count] = $file;
$count++;
}
}
closedir($dir_handle);
但是我不确定首先,$count应该是一个数字。做:
if (!is_dir($url.'/'.$file) && ($file="*.jpg" || $file="*.gif" || $file="*.png") && $file!="picture0.*")
其次,恕我直言,PHP不支持这样的通配符匹配。您不能使用
“*”
进行匹配。您需要使用正则表达式在条件中进行匹配。首先,$count应该是一个数字。做:
if (!is_dir($url.'/'.$file) && ($file="*.jpg" || $file="*.gif" || $file="*.png") && $file!="picture0.*")
其次,恕我直言,PHP不支持这样的通配符匹配。您不能使用
“*”
进行匹配。您需要使用正则表达式在条件中进行匹配。我可以看到两件会给您带来问题的事情:
分配/比较:
您有以下代码:
$count = 0;
但是,一个等号将执行赋值,而不是比较-需要使用两个等号(=)。看见基本上,您在if语句中执行赋值所做的是:
if ($file="*.jpg" //etc...
字符串的通配符匹配
您也不能对字符串进行那样的通配符匹配($file==“*.jpg),您可以使用preg_match()和正则表达式来代替,例如
$file = '*.jpg';
if ($file) { }
不过,这样做可能更好:
if (!preg_match('/\.jpg$/i', $file)) {
//not .jpg
}
我可以看出两件事会给你带来麻烦: 分配/比较: 您有以下代码:
$count = 0;
但是,一个等号将执行赋值,而不是比较-为此需要使用两个等号(=)。请参阅。在if语句中执行赋值的基本操作是:
if ($file="*.jpg" //etc...
字符串的通配符匹配
您也不能对字符串进行那样的通配符匹配($file==“*.jpg),您可以使用preg_match()和正则表达式来代替,例如
$file = '*.jpg';
if ($file) { }
不过,这样做可能更好:
if (!preg_match('/\.jpg$/i', $file)) {
//not .jpg
}
按照thedz和Tom Haigh的建议去做
你也听说过吗?这将允许您使用Eclipse设置一个环境,并逐步完成PHP代码。如果不使用Eclipse和XDebug的组合,我不会进行开发。按照DZ和Tom Haigh的建议进行开发
你也听说过吗?这将允许您使用Eclipse设置一个环境,并逐步完成PHP代码。如果不使用Eclipse和XDebug的组合,我不会进行开发。您要做的第一件事是调试if行。请记住,如果放置
*.gif
,它会查看文件的实际名称是否为“*.gif”
,而不是查找“任意”gif文件,这与Windows的做法类似
我的建议是检查if的每个部分,并使其通过。然后就可以开始组装了。您要做的第一件事就是调试if行。请记住,如果放置
*.gif
,它会查看文件的实际名称是否为“*.gif”
,而不是查找“任意”gif文件,这与Windows的做法类似
我的建议是检查if的每个部分,并使其通过。然后你就可以开始组装了。这应该不是问题。我刚刚试过
$count=“0”$计数++;echo$count代码>它回显1。为什么是1而不是0?没有任何意义,没错。它比任何东西都更具风格。隐式类型转换困扰着我。我认为真正的问题是与“*”匹配的通配符@jimyi:无论如何,通过递增字符串来计数是个坏主意。@hobodave:oops,那是个打字错误。应该是0。谢谢你的接球!这不应该是个问题。我刚刚试过$count=“0”$计数++;echo$count代码>它回显1。为什么是1而不是0?没有任何意义,没错。它比任何东西都更具风格。隐式类型转换困扰着我。我认为真正的问题是与“*”匹配的通配符@jimyi:无论如何,通过递增字符串来计数是个坏主意。@hobodave:oops,那是个打字错误。应该是0。谢谢你的接球!为什么是$pathinfo而不是$extension?为什么是$pathinfo而不是$extension?