使用 fgetcsv 时获取匹配的 csv 列的最后一次出现
Get last occurrence of matched csv column when using fgetcsv
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
if ($data[0] == "var") {
}
}
我目前正在使用 fgetcsv
读取 csv 文件 ($handle
) 和 return 第一列与 var
匹配的行。到目前为止,这很好用,因为 $data[0]
是唯一值。
但是往后,$data[0]
中可能有重复值,如果有重复,我怎么能只 return last 出现呢?
如果有多个,这将得到 first 出现,因为它会在找到第一个后 break
退出循环:
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
这将得到 last 次出现,因为它不会 break
退出循环,最后一次出现将是分配给结果的最后一次:
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
if ($data[0] == "var") {
$result = $data;
// loop keeps going until end of file
}
}
print_r($result): // last one
您实际上不需要分配给 $result
,因为 $data
将在 break
之后或循环结束后包含正确的行。
只需将行保存在某处:
$lastRow = null;
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
if ($data[0] == "var") {
$lastRow = $data;
}
}
每次出现需要的行都会覆盖 lastRow
变量,因此当循环结束时,您将看到最后一行符合您的条件。
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
if ($data[0] == "var") {
}
}
我目前正在使用 fgetcsv
读取 csv 文件 ($handle
) 和 return 第一列与 var
匹配的行。到目前为止,这很好用,因为 $data[0]
是唯一值。
但是往后,$data[0]
中可能有重复值,如果有重复,我怎么能只 return last 出现呢?
如果有多个,这将得到 first 出现,因为它会在找到第一个后 break
退出循环:
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
这将得到 last 次出现,因为它不会 break
退出循环,最后一次出现将是分配给结果的最后一次:
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
if ($data[0] == "var") {
$result = $data;
// loop keeps going until end of file
}
}
print_r($result): // last one
您实际上不需要分配给 $result
,因为 $data
将在 break
之后或循环结束后包含正确的行。
只需将行保存在某处:
$lastRow = null;
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
if ($data[0] == "var") {
$lastRow = $data;
}
}
每次出现需要的行都会覆盖 lastRow
变量,因此当循环结束时,您将看到最后一行符合您的条件。