Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数组的PHP计数返回的值是否超过其应返回的值?_Php_Arrays_Count_Sizeof - Fatal编程技术网

数组的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,这解释了很多