Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.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 - Fatal编程技术网

Php 每一个问题

Php 每一个问题,php,Php,我想使用foreach循环遍历php scandir函数的结果,然后显示文件名和大小,但在使用代码时: $scan = scandir("/home/foo"); foreach ($scan as $value) { echo "$value" . "<br>" . filesize("/home/foo/$value") . " "; } 为什么会这样?如何使其按与代码相同的顺序格式化,即文件名,然后是文件大小?移动到末尾,这是一个换行符并开始一个新行。在值和文件大小之间有一个

我想使用foreach循环遍历php scandir函数的结果,然后显示文件名和大小,但在使用代码时:

$scan = scandir("/home/foo");
foreach ($scan as $value) {
echo "$value" . "<br>" . filesize("/home/foo/$value") . " ";
}
为什么会这样?如何使其按与代码相同的顺序格式化,即文件名,然后是文件大小?

移动到末尾,这是一个换行符并开始一个新行。

在值和文件大小之间有一个换行符,但不是在文件大小之后

因此,文件大小将作为第一件事出现在新行上,并且下一个元素的名称将出现在它旁边。所以它实际上是按正确的顺序输出东西;它只是在打印输出中看起来不像那样

解决方案:

交换和字符串的各个部分

echo "$value" . " " . filesize("/home/foo/$value") . "<br>";

如果您查看scandir的PHP手册,您将看到返回数组的第一个和第二个值通常为。和..,这可能会导致偏移您的输出。不要在引号中使用这样的变量:$value。只需使用$value。谢谢@David,这解释了大部分问题。
echo "$value" . " " . filesize("/home/foo/$value") . "<br>";