数组的PHP计数返回的值是否超过其应返回的值?
这是我的代码:数组的PHP计数返回的值是否超过其应返回的值?,php,arrays,count,sizeof,Php,Arrays,Count,Sizeof,这是我的代码: $dir = "img/"; $files = scandir($dir); for ($i=0; $i <= count($files); $i++) { echo $files[$i]."<br/>"; } echo count($files); 您应该首先检查scandir的返回值。看看$files是否真的是一个数组 <?php $dir = "t"; $files = scandir($dir); if(is_array($files
$dir = "img/";
$files = scandir($dir);
for ($i=0; $i <= count($files); $i++) {
echo $files[$i]."<br/>";
}
echo count($files);
您应该首先检查
scandir
的返回值。看看$files
是否真的是一个数组
<?php
$dir = "t";
$files = scandir($dir);
if(is_array($files))
{
for ($i=0; $i <= count($files); $i++) {
echo $files[$i]."<br/>";
}
echo count($files);
}
?>
您应该首先检查
scandir
的返回值。看看$files
是否真的是一个数组
<?php
$dir = "t";
$files = scandir($dir);
if(is_array($files))
{
for ($i=0; $i <= count($files); $i++) {
echo $files[$i]."<br/>";
}
echo count($files);
}
?>
这是因为数组包含“.”和“..”两个文件名 您可以使用下面的代码来摆脱它
$files = array_diff(scandir($dir), array('..', '.'));
这是因为数组包含“.”和“..”两个文件名 您可以使用下面的代码来摆脱它
$files = array_diff(scandir($dir), array('..', '.'));
这是scandir()的正常行为,也是事实 这是因为每个目录都包含两个逻辑条目 1) “.”对当前目录的引用。
2) “。对父目录的引用 所以对于空目录,你也会得到清单2的东西
请参阅:这是scandir()的正常行为,也是正确的 这是因为每个目录都包含两个逻辑条目 1) “.”对当前目录的引用。
2) ".. 对父目录的引用 所以对于空目录,你也会得到清单2的东西
请参阅:问题是scandir()还返回“.”和“.”以引用父目录。如果您使用var_dump($files),您将看到我所说的内容。问题是scandir()还返回“.”和“.”表示父目录。如果您使用var_dump($文件),您将看到我在说什么。同意@HankyPankyㇱ同意@HankyPankyㇱ谢谢,这解释了很多Hanks,这解释了很多