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

问题描述 投票:-1回答:2

我有一个名为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);
    }
}
php csv fgetcsv
2个回答
2
投票
$csv = array_map('str_getcsv', file('./temp.csv'));

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

0
投票

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

<?php
$result = array_column(array_map('str_getcsv', file('data.csv')), null, 0)['Microsoft'] ?? null;
© www.soinside.com 2019 - 2024. All rights reserved.