Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.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 使用fgetcsv时获取最后一次匹配的csv列_Php_Fgetcsv - Fatal编程技术网

Php 使用fgetcsv时获取最后一次匹配的csv列

Php 使用fgetcsv时获取最后一次匹配的csv列,php,fgetcsv,Php,Fgetcsv,我目前正在使用fgetcsv读取一个csv文件($handle),并返回第一列与var匹配的行。到目前为止,这一切都很顺利,$data[0]是唯一的值 但是向前看,$data[0]中可能存在重复的值,如果存在重复项,我如何才能仅返回上次出现的值?如果存在多个重复项,这将获得第一次出现的值,因为在找到第一次出现后,它将中断: while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { if ($data[0] == "var") {

我目前正在使用
fgetcsv
读取一个csv文件(
$handle
),并返回第一列与
var
匹配的行。到目前为止,这一切都很顺利,
$data[0]
是唯一的值

但是向前看,
$data[0]
中可能存在重复的值,如果存在重复项,我如何才能仅返回上次出现的值?

如果存在多个重复项,这将获得第一次出现的值,因为在找到第一次出现后,它将
中断

while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    if ($data[0] == "var") {
    }
}
这将获得最后一次出现,因为它不会中断循环,最后一次出现将是分配给结果的最后一次:

while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    if ($data[0] == "var") {
        $result = $data;
        break; // break out of the loop after the first is found
    }
}
print_r($result): // first one

实际上,您不需要分配给
$result
,因为
$data
将在
中断后或循环结束后包含正确的行。

只需将行保存在某个位置:

$lastRow=null;
while(($data=fgetcsv($handle,1000,“,”)!==FALSE){
如果($data[0]=“var”){
$lastRow=$data;
}
}

所需行的每一次出现都将覆盖
lastRow
变量,因此当循环完成时,您将拥有与您的条件匹配的最后一行

取决于
if
中的内容。如果您将
$data
分配给某个对象,并且没有中断循环,那么它将始终是最后一个。@felippe我只是在重复If中的其他列。。if($data[0]==“var”){echo';}但它返回第一行出现。
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    if ($data[0] == "var") {
        $result = $data;
        // loop keeps going until end of file
    }
}
print_r($result): // last one