PHP遍历csv的每一行并返回具有匹配元素的行

Posted

技术标签:

【中文标题】PHP遍历csv的每一行并返回具有匹配元素的行【英文标题】:PHP iterate through each row of csv and return row with matching element 【发布时间】:2020-02-13 15:33:16 【问题描述】:

我有一个名为 data.csv 的 csv 文件。

这是 data.csv 中的示例

Microsoft,2020-02-13,"Sample",tt,aa,qq,w,ee,rr,tt,", ",", ",", ","2020-02-13 16:03:08"
Google,2020-02-13,"HQ",tt,aa,qq,w,ee,rr,tt,", ",", ",", ","2020-02-13 16:10:48"

我正在尝试遍历 csv 的每一行并检查用户输入的变量(比如说 var="Microsoft")是否与任何行中的第一个值匹配。如果匹配,则将该行中的所有元素作为数组返回。 (尝试使用 fgetcsv 但返回整个 csv 文件)

这是我迄今为止尝试过的:

foreach ($csv as $line) 
    if ($line[0] == 'Microsoft') 
        $file = fopen("data.csv","r");
        echo(fgetcsv($file));
        fclose($file);
    

【问题讨论】:

【参考方案1】:
$csv = array_map('str_getcsv', file('./temp.csv'));

foreach ($csv as $line) 
    if ($line[0] == 'Microsoft') 
        echo implode(', ',$line);
    

【讨论】:

【参考方案2】:

如果第一列的值适合作为数组索引。您可以使用 array_column 按您的第一列重新索引:

<?php
$result = array_column(array_map('str_getcsv', file('data.csv')), null, 0)['Microsoft'] ?? null;

【讨论】:

以上是关于PHP遍历csv的每一行并返回具有匹配元素的行的主要内容,如果未能解决你的问题,请参考以下文章

如果行中的指定值与条件匹配,则从 CSV 返回一行

传递数组作为参数以返回所有匹配元素的行

csv 文件中的模式匹配并附加到匹配的行

使用 php 循环遍历 XML 元素,查找匹配并更改子元素 innerHTML

遍历 pandas 数据框中的行并匹配列表中的元组并创建一个新的 df 列

VBA宏:捕获具有特定字符串的行并返回它