php - 在 PHP 中过滤 CSV 文件,如 SQL
问题描述
我有一个包含多列的 CSV 文件,我想像使用 SQL 一样进行排序和过滤。
CSV 结构 -
Type | Vin | DateInStock
New | 675F | 12/06/19
Used | 7643 | 12/05/19
etc..
这是我的 PHP 文件 -
$fh = fopen('myFile.csv', 'r');
while($line = fgetcsv($fh)) {
$type[] = array($line[0]);
$vin[] = array($line[1]);
$date[] = array($line[2]);
}
所以我通常会做的是
"SELECT * FROM table WHERE type = 'Used' AND date = '$todays_date'";
然后回显所有的 Vin 数字
$vin = $row['vin'];
我可以获得类型、vin 和 date 的数组,但不知道如何仅显示从今天开始的 vin 并且具有已使用的类型。我会怎么做才能做到这一点?我试过这个只是为了获得类型为 Used 的 vin 号码 -
foreach($type as $t){
$recall_type = $t[0];
if($recall_type == 'Used'){
foreach ( $vin as $value ){
$recall_vin = $value[0];
$recall_vin.'<br>';
}
}
}
但这只是数百次呼应相同的 vin 模式..
解决方案
我会将所有值读入一个多维数组;然后您可以array_filter
根据您拥有的条件进行过滤。例如:
$fh = fopen('myFile.csv', 'r');
$vehicles = array();
while($line = fgetcsv($fh)) {
$vehicles[] = array(
'type' => $line[0],
'vin' => $line[1],
'date' => $line[2]
);
}
// get today's date in a format to match the CSV
$today = date('m/d/y');
$vehicles = array_filter($vehicles, function ($v) use ($today) {
return $v['type'] == 'Used' && $v['date'] == $today;
});
推荐阅读
- angular - Angular,在其他 HTML 中包含 HTML 文件
- javascript - 无法更新组件中的状态挂载钩子是否反应
- python - 我们如何创建一个列表并在python中动态使用它
- python - Pandas:组织一个大型编号的 DF
- angular - 将 Angular 9 应用程序部署到 heroku - 部署成功但不起作用
- swift - Apple教程期间Type没有成员
- javascript - 尝试使用 php 循环遍历 id 并单击以获取模式弹出窗口
- javascript - 两次导入数组时的节点奇怪行为
- c# - 从另一个表单 c# 获取值
- node.js - Azure 管道 - 调整大小:无法打开终端 /dev/tty