You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中!in_array()判断CSV文件时返回false的问题排查

问题根源

你的代码里$file变量最终的值是test.csv,而你用in_array($file, ['materials', 'products'])判断时,test.csv显然不在目标数组里,所以!in_array()的结果为true,触发return false导致代码终止。

解决方案

根据你的实际需求,分两种场景处理:

场景1:验证CSV内容是否包含指定值

如果你的目标是检查生成的CSV里的内容是否为materials或products,应该读取CSV内容后再判断,而非检查文件名:

// 写完CSV后务必关闭文件
fclose($testCsvFile);

// 读取CSV内容并整理
$csvValues = [];
$handle = fopen("test.csv", "r");
while (($row = fgetcsv($handle)) !== FALSE) {
    $csvValues = array_merge($csvValues, $row);
}
fclose($handle);

// 检查内容是否包含目标值
$containsTarget = !empty(array_intersect($csvValues, ['materials', 'products']));
if (!$containsTarget) {
    return false;
}

场景2:验证文件名(无后缀)是否匹配指定值

如果你的目标是确保文件名是materials或products(比如文件应为materials.csv或products.csv),需要提取文件名的无后缀部分再判断:

$file = basename($getFile);
// 提取不带后缀的文件名
$fileNameNoExt = pathinfo($file, PATHINFO_FILENAME);

if (!in_array($fileNameNoExt, ['materials', 'products'])) {
    return false;
}

额外提示:代码中unset($parsed_data[0]);里的$parsed_data变量未定义,会触发Notice级错误,建议提前声明变量或移除无用代码。

内容的提问来源于stack exchange,提问作者liliget

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 16:43:56