【问题标题】:if (in_array) doesn't seem to be seeing what's in the array, what have I got wrong?如果 (in_array) 似乎没有看到数组中的内容,我做错了什么?
【发布时间】:2018-08-18 22:08:20
【问题描述】:

我有一些 PHP 代码用于在 CSV 文件的第一个“列”中搜索文件名,如果找到,则将其“删除”到“已删除”文件夹中。

我的代码一定有问题,因为if (in_array 在数组中没有看到与$fileNoExtension 相同的名称。我在底部添加了行进行检查,然后我得到回显“[ImportantFile] apparantly is not the same as [ImportantFile]???

我已经取出了从$thisFileWithExtension 获取fileNoExtension 的代码,这样它就不会碍事了。

foreach ($fileArray as $FileWithExtension) {
    if (file_exists('PHP/ManualRemove.csv')) {
        $csvManualDemos = fopen("PHP/ManualRemove.csv", "r");
        while ($csvRows = fgetcsv($csvManualRemove)) {
            if (in_array($fileNoExtension, $csvRows)) {
                echo "Found on manual remove list. Removed.";
                rename("$fileWithExtension", "Removed/$fileWithExtension");
                continue;
            } else
                echo "\n [$fileNoExtension] apparantly is not the same as [$csvRows[0]]???\n";
        }
    }
}

我确定我在某处有一些代码错误,但我无法解决!非常感谢:D

【问题讨论】:

  • $csvManualDemos;那是错字吗?应该是$csvManualRemove 吧?
  • 请在您的代码中添加一个示例,说明变量$fileNoExtension 包含的内容以及PHP/ManualRemove.csv 包含的内容(即,应该包含$fileNoExtension 的行。
  • 是的。最好了解 CSV 文件中的内容以及 $FileWithExtenstion 的内容。
  • 对我的错别字表示歉意,它们是在我编辑代码以在此处发布时发生的,我向您保证没有错别字!我发现 (in_array) 只缺少第一行,其余时间它可以看到那里有什么。这样做有什么原因吗?

标签: php arrays while-loop fgetcsv


【解决方案1】:

对于我的代码中的拼写错误,伙计们深表歉意 - 他们是从编辑代码到这里发布的,而不是我实际代码中的错误。

我找到了问题的答案。出于某种原因,in_array 缺少我的 CSV 的第一行。我已将我的 CSV 保存为“CSV UTF-8”,而不仅仅是导致此问题的“CSV”。

【讨论】:

    【解决方案2】:

    您的代码中有区分大小写的问题。您混淆了 $FileWithExtension 和 $fileWithExtension。它们不一样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-15
      • 2014-12-18
      • 1970-01-01
      • 2019-02-09
      相关资源
      最近更新 更多