使用PHP查找CSV文件中是否存在值
这是我的代码,用于检查.csv文件中的一行是否包含特定名称,但它不起作用 我认为这与使用PHP查找CSV文件中是否存在值,php,csv,fopen,fgetcsv,Php,Csv,Fopen,Fgetcsv,这是我的代码,用于检查.csv文件中的一行是否包含特定名称,但它不起作用 我认为这与if语句有关 $file_handle = fopen("sources.csv", "r"); while (!feof($file_handle) ) { $line_of_text = fgetcsv($file_handle, 1024); if ($line_of_text[0] = 'paul') { echo 'Found'; } } fclose($f
if
语句有关
$file_handle = fopen("sources.csv", "r");
while (!feof($file_handle) ) {
$line_of_text = fgetcsv($file_handle, 1024);
if ($line_of_text[0] = 'paul') {
echo 'Found';
}
}
fclose($file_handle);
我正在尝试签入sources.csv文件,名称为“Paul”
由于技术原因,我不能使用像MySQL这样的数据库 尝试使用in_数组而不是==
if(in_array('paul', $line_of_text)) {
// FOUND
}
您的问题是这一行:
if ($line_of_text[0] = 'paul') {
这将始终是正确的,因为您正在使用赋值运算符=
将值paul
赋值给文本[0]的$line\u。您要做的是检查两者是否相等,因此需要使用相等运算符,=
。代码行应为:
if ($line_of_text[0] == 'paul') {
PHP中还有==
相等运算符,用于检查相同的值和类型。(与编译语言相比,这是PHP特别令人讨厌的特性)
e、 g.考虑:`$foo=5$bar=“5”
不要与混淆=代码>比较运算符:
if ($foo != $bar) // foo is not equal to bar (note the single =)
由于您尚未提供您的文件样本,我将提交以下内容作为备选方案
请注意,在您当前的代码中,您是使用单个等号=
进行赋值,而不是使用=
或===
进行比较,只是作为参考
if($line\u of_text[0]='paul')
应读作if($line\u of_text[0]='paul')
假设以下.csv
格式(即使不带逗号也可以使用)并且区分大小写,请参考脚注了解不区分大小写的搜索
Paul, Larry, Robert
代码:
在……上找到行号。
要提供找到该行的行号,请执行以下操作:
$line_number = (strpos($line, $search) !== FALSE) ? $count : $line_number;
或(不区分大小写)
然后只需echo$line\u编号代码>错误(如果有)?另外,您正在分配一个等号。如果($line\u of_text[0]='paul')
BTW=
与=
或==
不同,请向我们展示您的.csv
文件的示例(包括是否以逗号分隔等)。查找“Paul”的范围相当广泛。我认为这是一个英语相对较差的问题的好例子(这并不可怕,但也不是很好),但却是一个完全可以理解的问题。荣誉编辑您的问题并添加几行sources.csv
作为您正在处理的数据示例。但是第一次将if($line\u of_text[0]='paul'){
更改为if($line\u of_text[0]='paul'){
这是错误的,因为它将检查当前CSV行中的所有字段,而不是所需的第一个字段。他在问题中没有指定只检查第一个字段。他的问题说明:“这是我检查.csv文件行是否包含特定名称的代码”他只检查第一个字段的事实可能是问题所在。非常感谢Fred-ii-的回答。它工作得非常好。
<?php
$search = "Paul";
$lines = file('sources.csv');
$line_number = false;
while (list($key, $line) = each($lines) and !$line_number) {
$line_number = (strpos($line, $search) !== FALSE);
}
if($line_number){
echo "Results found for " .$search;
}
else{
echo "No results found for $search";
}
$line_number = (stripos($line, $search) !== FALSE);
$line_number = (strpos($line, $search) !== FALSE) ? $count : $line_number;
$line_number = (stripos($line, $search) !== FALSE) ? $count : $line_number;