如果语句仅在for循环中运行一次

时间:2018-05-08 21:01:26

标签: php

所以我在服务器上有一个包含行的.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的图片 image

老实说,我在这里非常难过,并且也看到了SO上发布的其他类似问题但没有用。

1 个答案:

答案 0 :(得分:0)

哎呀,我觉得很傻。我的错误是get_string_between()中的“分隔符”,文件packages.txt使用的是^;以外的其他内容