所以我在服务器上有一个包含行的.txt
文件,这些行包含文件名,文件所在的类别以及该文件的确切路径。我正在运行一个循环遍历每一行的for
循环,并将文件名存储到数组中自己的索引,类别,确切的路径,我也试图读取filesize()
的那些基于给定路径的文件。
我知道为了使用filesize()
,您首先需要检查if (file_exists())
,我在if
循环中的for
语句中进行检查。
这是我的循环:
for ($x = 0; $x < $content["lines"]; $x++) {
$content["packages"][$x]["name"] = strtok($content["eachLine"][$x], ".");
$content["packages"][$x]["category"] = get_string_between($content["eachLine"][$x], ':', '^');
$content["packages"][$x]["path"] = get_string_between($content["eachLine"][$x], '^', ';');
if (file_exists("/var/www/public_html" . $content["packages"][$x]["path"])) {
$content["packages"][$x]["size"] = filesize("/var/www/public_html" . $content["packages"][$x]["path"]);
}
}
一些背景信息; $content["lines"]
是一个等于int
的{{1}},所以循环在它应该停止时停止,没有问题。问题是循环的第一次迭代,它检查2
并且给出的字符串(文件)来自文件的第一行,因为它确实存在,然后抓取if (file_exists())
。但是在围绕循环的第二次迭代中,它完全跳过filesize
语句。
这是if
的图片
老实说,我在这里非常难过,并且也看到了SO上发布的其他类似问题但没有用。
答案 0 :(得分:0)
get_string_between()
中的“分隔符”,文件packages.txt
使用的是^
和;
以外的其他内容