簡體   English   中英

按列名從csv獲取記錄

[英]Get record from csv by column name

我有一個csv表(我的csv文件http://jpst.it/1GCd9

| id | email | name | google.com | yahoo.com |
| 1  | email1@email.com | jack |   | + |
| 2  | email2@email.com | jack | + |   |
| 3  | email3@email.com | jack |   |   |

是否可以通過列名獲得“+”的電子郵件?

例如,我想指定google.com並獲取電子郵件email2@email.com

我只知道如何按列id獲取數據:(

  while (($row = fgetcsv($fileHandle, 0, ",")) !== FALSE) {
      if($flag) { $flag = false; continue; }

      $explode = explode(";",$row[4]);
      echo $explode[4]. ", ";
  }

通過使用已清理的CSV(刪除所有多余的空白區域和數組過濾器,您可以獲得所需的內容)。

我使用了array_map('trim', array_filter(explode($delimeter, $lines[0]), function($entry){return !empty($entry);})); 清理來自空格的所有輸入,並丟棄最后一個管道字符末尾的“空”標題。

請參閱以下函數: array_maptrimarray_filter

然后,當所有內容都“標准化”時,我們有一個帶有正確字段的關聯數組,因此我們可以再次使用array_filter進行搜索。 變量$only_with_plus將只包含與搜索參數匹配的關聯數組。

$only_with_plus = array_filter($entries, function($entry) {
   return $entry['google.com'] == '+' && $entry['email'] = 'email2@email.com';    
});

在線查看: https//ideone.com/ZDn2dv

<?php
$CSV = <<<EOF
| id | email | name | google.com | yahoo.com |
| 1  | email1@email.com | jack |   | + |
| 2  | email2@email.com | jack | + |   |
| 3  | email3@email.com | jack |   |   |
EOF;
$delimeter = '|';
$lines = explode("\n", $CSV);
$key_names = array_map('trim', array_filter(explode($delimeter, $lines[0]), function($entry){return !empty($entry);}));
$entries = [];
$len = count($lines);
for($c = 1; $c < $len; $c++) {
    $line = array_map('trim', array_filter(explode($delimeter, $lines[$c]), function($entry){return !empty($entry);}));
    $entry = [];
    foreach($line as $key => $value) {
        $entry[$key_names[$key]] = $value;

    }
    $entries[] = $entry;
}

$only_with_plus = array_filter($entries, function($entry) {
   return $entry['google.com'] == '+' && $entry['email'] = 'email2@email.com';  
});
var_dump($only_with_plus);

// your code goes here

您無法直接過濾csv,但可以在將其解析為數組后對其進行過濾;

http://sandbox.onlinephpfunctions.com/code/f17969e35fcfc5e2f4b2f25202359f1b4cc4840b

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM