【问题标题】:Parsing my data to search the csv array解析我的数据以搜索 csv 数组
【发布时间】:2017-08-12 06:14:14
【问题描述】:

我知道答案可能很简单,但很难让它发挥作用。我有以下代码

}

$csv = array();

// Open File with error handler
if (($file = fopen('./csv/file.csv', 'r')) === false) {
     throw new Exception('There was an error loading the CSV file.');
     }

  else {
       while (($line = fgetcsv($file, 1000)) !== false) {
       $csv[] = $line;}

fclose($file);}




if (isset($_GET['names'])) {
$name = $_GET['names'];


 $results = array();

 foreach($csv as $curr) {
 $Data = explode(',',$curr['1']);
 if(in_array($names,$Data)
    $results[] = $curr;
 }
      } else {

 ...... Blah blah blah

?>

所以我想要做的是使用 get 解析来自 url 的数据并搜索 csv 数组以在每个键和数组 [1](它是一个 2 列 csv 文件)中找到匹配的字符串,如果名称匹配它得到来自 csv[0] 的值并存储在数组中,以便我可以将其打印到屏幕上。因为我没有在我的数组中得到匹配的字符串而丢失了。我哪里出错了有什么帮助吗?

Csv 文件示例:

 Charlie and the chocolate factory, Ronald Dahl
 Hunger games, Suzanne Collins
 ect

所以我想做的是解析来自 url ?name=Suzanne,%20Collins 的数据来搜索我的 csv 数组。所以它会选择 suzanne collins 的所有书籍并将值放入我的数组中。

【问题讨论】:

  • 当您使用fgetcsv 时,您可能不需要使用$Data = explode(',',$curr['1']);。如果您在问题中包含 CSV 文件中的一两行,也会很有帮助。
  • 嘿 Nigel,我一直在寻找使用以下代码作为另一种方式: $books = array_keys($csv[1], $name1);过滤掉那么多字符串的书,但它没有将值解析为数组。

标签: php arrays html csv foreach


【解决方案1】:

我已尝试尽可能多地使用您的代码,主要变化是在寻找作者的循环中。正如我所提到的,fgetcsv 已经将字段拆分,但由于名称周围可能有空格(如您的示例),我在测试中使用了trim 以确保我不会错过任何人。

// Open File with error handler
if (($file = fopen('./books.csv', 'r')) === false) {
    throw new Exception('There was an error loading the CSV file.');
}

$books = array();
while (($line = fgetcsv($file)) !== false) {
    $books[] = $line;
}
fclose($file);

if (isset($_GET['names'])) {
    $name = $_GET['names'];

    $results = array();

    foreach($books as $book) {
        if( $name == trim($book[1]))  {
            $results[] = $book;
        }
    }

    print_r($results);
}

(请注意,我为测试目的更改了文件名,所以不要忘记更改)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多