Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP处理流获取数组中的内容_Php_Arrays - Fatal编程技术网

PHP处理流获取数组中的内容

PHP处理流获取数组中的内容,php,arrays,Php,Arrays,转换包含制表符分隔的CSV输出的字符串时遇到问题 排列成一个数组。使用以下代码时: $data = stream_get_contents($request->getShipmentReport()); 我得到的数据如下: Date Shipped Comments Feedback Arrived on Time 5/11/15 2 comment response Yes 现在,我想将这些数据处理到一个数组中,返

转换包含制表符分隔的CSV输出的字符串时遇到问题 排列成一个数组。使用以下代码时:

$data = stream_get_contents($request->getShipmentReport());
我得到的数据如下:

Date    Shipped     Comments        Feedback    Arrived on Time
5/11/15 2       comment         response    Yes 
现在,我想将这些数据处理到一个数组中,返回的头(第1行)作为包含其后每行的值的索引

我试图以这样的方式结束:

$line['Date'] = 5/11/15
$line['Shipped'] = 2
$line['Feedback'] = response
$line['Arrived on Time']  yes

实现这一点的最佳方法是什么?

我建议使用库来处理CSV,例如

您可以立即传递数据并开始使用阵列结构:

$csvString = stream_get_contents($request->getShipmentReport());
$csvReader = \League\Csv\Reader::createFromString($csvString);
$data = $csvReader->fetchAssoc(
    array('Date', 'Shipped', 'Comments', 'Feedback', 'Arrived on Time')
);
// Or since line 0 contains header
$data = $csvReader->fetchAssoc(0); // 0 is offset of dataset containing keys
现在,您的数据应采用如下结构:

$data = array(
    array(
        'Date' => '5/11/15',
        'Shipped' => '2',
        ...
    ),
    array(
        ...
    )
);

你甚至可以过滤掉特定的数据集和各种新奇的东西。只需查看我链接到的文档。

League CSV reader给了我一个糟糕的结果。我用这个来代替:

          $csvReportString = stream_get_contents($request->getReport());
          $csvReportRows = explode("\n", $csvReportString);
          $report = [];
          foreach ($csvReportRows as $c) {
            var_dump($c);
            if ($c) { $report[] = str_getcsv($c, "\t");}
          }
          var_dump($report);

您可以使用函数“fgetcsv”fgetcsv()期望参数1是资源,字符串给定($data)阅读我给您的页面,有一个完整的代码示例是fgetcsv for strings。数据之间的空间不同,因此
str_getcsv
将返回断开的数据