Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP查找CSV文件中是否存在值_Php_Csv_Fopen_Fgetcsv - Fatal编程技术网

使用PHP查找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

这是我的代码,用于检查.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($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;