【问题标题】:Using PHP to search CSV by Column?使用 PHP 按列搜索 CSV?
【发布时间】:2015-08-09 16:22:41
【问题描述】:

无法按列搜索 CSV 文件。例如,我有以下 CSV 文件:

姓名,有IPHONE,有安卓

鲍勃,是的,不,

弗雷德,不,是的,

如何使用 php 在第 2 列中搜索“是”值, 然后只返回第二列结果中带有“yes”的行?

【问题讨论】:

  • 取决于您的代码来读取 CSV。
  • 我不知道你说的 AbraCadaver 是什么意思?? $file = fopen("example.csv","r"); $fileholder = fgetcsv($file);
  • 您需要打印出“是”和“否”还是数一数?这样做的目的是什么?
  • 好吧,例如,我只想打印所有在第二列中有“是”的用户。不显示第二列中没有的那些。
  • 你怎么可能会问这个问题?

标签: php html csv


【解决方案1】:

我想,这可以帮助你。阅读fgetcsv

 <?php

    $result  = [];
    if (($handle = fopen("test.csv", "r")) !== FALSE) {
        while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
          if($data[1] == 'yes') //Checks second column is 'yes' 
              array_push($result, $data);
        }
        fclose($handle);

      var_dump($result);
    }
    ?>

【讨论】:

  • 应该是array_push($result, $data);
【解决方案2】:

假设您已经拥有parsed the csv file into an array
array_keys函数的第二个参数是mixed $search_value

如果指定,则只返回包含这些值的键。

要搜索特定列,请使用array_column

$res = array_keys(array_column($csv, 1), "yes");

test at eval.in;这将返回第二列中所有“是”匹配项的键。

【讨论】:

    【解决方案3】:

    如果有的话,你有没有尝试过,也请发布,你可能会觉得这很有帮助

    $csv = array_map('str_getcsv', file('data.csv'));
    
    foreach($csv as $line){
        if($line[1] == 'yes'){
            //do what ever you want
            echo "found yes";
        }
    }
    

    【讨论】:

    【解决方案4】:

    这就是我尝试过的,它适用于搜索行中的值。 然后你可以获取行的值并使用它。

    <?php
    
    $file = fopen("test.csv", "r");
    $str = "n@gmail.com";
    while (($data = fgetcsv($file)) !== false)
    {
        if(in_array($str, $data))
        {
            foreach ($data as $i)
            {
                echo $i."<br>";
            }   
        }
    }
    fclose($file);
    ?>
    

    【讨论】:

      猜你喜欢
      • 2012-01-10
      • 2014-01-08
      • 2011-01-11
      • 2017-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多