php - LimitIterator 偏移量 1 和 2 个元素
问题描述
我面临的问题是我有一个读取 CSV 文件的 SplFileObject,然后我将它包装到一个 LimitIterator 中。
CSV 文件有 2 行、标题和 1 行,我将 LimitIterator 偏移量设置为 1,但我无法覆盖它,似乎索引存在一些内部问题。
这是代码:
$csvFile = new \SplFileObject($fileName);
$csvFile->setFlags(\SplFileObject::READ_CSV);
$iterator = new \LimitIterator($csvFile, 1);
/** @var \LimitIterator $it */
foreach ($iterator as $it) {
list($.., $.., $..) = $it;
$result[] = [
...
];
}
return $result;
如果 CSV 有 3 行(标题和 2 行),则代码运行良好,但只有标题和 1 行,它不起作用。
任何想法?
谢谢。
解决方案
就个人而言,我会为此使用 fopen 和 fgetcsv 函数,如下所示;
<?php
$handle = fopen("myFile.csv", "r");
if ($handle != false)
{
$header_row_handled = false;
while ($datarow = fgetcsv($handle, 0, ",")
{
if (!$header_row_handled)
{
$header_row_handled = true;
}
else
{
/* Whatever you need */
$dataparta = $datarow[0];
$datapartb = $datarow[1];
$datapartc = $datarow[2];
}
}
}
循环意味着您每次都可以跳过第一行,并且可能为此使用更少的资源,因为您没有那么多的对象漂浮在周围
php.net页面也应该可以帮助您
推荐阅读
- python-3.x - Scrapy: X Path choose all headers where ancestor is not footer
- r - 在 R 中创建频率表
- ionic-framework - 将http请求中的图像附加到ionic 3中的节点服务器时出现错误413
- timestamp - Google App Maker 时区时间戳不使用用户设备信息
- javascript - 当字符串存在于数组中时如何为replace()提供输入
- css - 让svg在悬停时正确旋转
- c# - 如何编写 azure b2c 应用程序创建脚本
- python - 赋值前引用的错误局部变量
- java - “扩展”实际上是做什么的?
- python - 用json导入导出csv