我将如何修改此fgetcsv以检查多个列(而不仅仅是一个!)

时间:2018-07-26 13:41:36

标签: php if-statement while-loop fgetcsv

我下面有一个工作脚本,该脚本检查列(1)中是否有东西,如果找到,则查看相邻的列(0)并执行一些操作。 (我已经排除了重要代码上方的内容,但是它以$thisGamethisGameNoExtension的形式循环访问目录中的每个文件,只是没有文件扩展名而已!

$csvFile = fopen("ManualRegionDupes.csv", "r");
while ($csvRows = fgetcsv($csvFile))
{
    if ($csvRows[1] == $thisGameNoExtension)
    {
        $primaryGame = $csvRows[0];

        $fileExtension = pathinfo($thisGame, PATHINFO_EXTENSION);
        $fileCheck = trim(shell_exec("ls -1 " . escapeshellarg($primaryGame) . "." . escapeshellarg($fileExtension) . " 2>/dev/null"));
        if ($fileCheck)
        {
            echo "\033[00;33m is on the Manual Region Dupes list and primary version detected. Moved to Removed folder\n";
            shell_exec("mv " . escapeshellarg($thisGame) . " Removed/");
            continue 2;
        }
        else
        {
            echo "\033[00;33m is on the Manual Region Dupes list but primary version is missing. Kept.\n";
            continue 2;
        }
    }
}
fclose($csvFile);

我需要创建一种查看3列(1、2和3)而不仅仅是一个的方法。如果这些列中的任何一个包含我要查找的内容,那么我想继续执行脚本。我不确定该如何实现。我尝试过:

if ($csvRows[1,2,3] == $thisGameNoExtension)

还有

`if ($csvRows[1] == $thisGameNoExtension) || if ($csvRows[2] == $thisGameNoExtension) || if ($csvRows[3] == $thisGameNoExtension)

但是两者都是错误的语法-希望它们能显示出我正在尝试达到的目标!我敢肯定有一个相当简单的解决方案,对于成为昏迷的人表示歉意,并在此先感谢您能为我提供的任何帮助!

非常感谢。

1 个答案:

答案 0 :(得分:1)

这是非常基本的东西,但是:

if ($csvRows[1] == $thisGameNoExtension || $csvRows[2] == $thisGameNoExtension || $csvRows[3] == $thisGameNoExtension) {

您没有为每个谓词指定if关键字。

编辑:要回复评论,请将您的if语句更改为:

if (in_array($thisGameNoExtension, array_slice($csvRows, 0, 3))) {