【问题标题】:loop out comma separated array value into multi dimensional array将逗号分隔的数组值循环到多维数组中
【发布时间】:2013-11-16 13:28:44
【问题描述】:

我的 PHP 应用程序会将选定的 csv 文件上传到内存中。然后使用 str_getcsv 将其转换为数组,如下所示。

//get file from session variable created in upload.php
$uploadedfile = str_getcsv($_SESSION['uploadedfile'], "\n");

//remove first two rows as these contain headers
unset($uploadedfile[0]);
unset($uploadedfile[1]);

数组当前如下所示:

array(4174) {
  [2]=>
string(180) "productID,ProductBarcode,brand,productType,productName"
  [3]=>
string(178) "productID,ProductBarcode,brand,productType,productName"

我需要遍历每一行并将逗号分隔值分解为多维数组。所以它看起来像这样:

array() {
 [row2]=>
   "productID => 001"
   "ProductBarcode=>101010"
   "brand=>apple"
   "productType=>notebook"
   "productName=>Macbook pro"
 [row3]=>
   "productID => 002"
   "ProductBarcode=>20202"
   "brand=>apple"
   "productType=>desktop"
   "productName=>iMac"
 }

我相信这个问题试图回答类似的问题,但没有提供答案: PHP: Parsing Comma-Separated Values Between Square Brackets into Multi-Dimensional Array

【问题讨论】:

  • str_getcsv 获取单行文本并将其分解为一个数组。它不适用于整个文件。要获取一个完整的 csv 文件,您必须在每一行上循环,然后单独地 str_getcsv 该行。
  • 马克说了什么。也可以看看fgetcsv

标签: php arrays multidimensional-array foreach explode


【解决方案1】:

尝试使用file 将文件行读入数组。然后使用array_shift 将第一行用作标题。之后,只需循环并将该行读入带有str_getcsv 的数组并与标题组合:

$uploadedfile = file($_SESSION['uploadedfile'], FILE_IGNORE_NEW_LINES);
$headers = array_shift($uploadedfile);
unset($uploadedfile[0]);

foreach($uploadedfile as $line) {
    $data[] = array_combine($headers, str_getcsv($line));
}

【讨论】:

  • @mickmackusa:那是 5 年前的事了,但没关系。
猜你喜欢
  • 2015-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-30
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多