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