【问题标题】:Delimited txt into an array with keys provided by first cell of delimieted txt [duplicate]分隔文本到数组中,键由分隔文本的第一个单元格提供[重复]
【发布时间】:2018-10-10 12:33:00
【问题描述】:
ID  OID Title   Description Option  Price
01  01JAP   Japanese Model  Japanese Model of the Dave Smith    Japanese    "$3,000 "
02  02ENG   English Model   English Model of the dave Smith     english "$1,000 "

txt 文件,如上图示例,以 /t 分隔。

我需要第一行成为我的数组的键,例如 ID 或 OID

"01" => array(

"ID" => "01",
"OID" => "01JAP",
"title" => "Japaneses model",
"description" => "Japanese Model of the Dave Smith ",
"option" => "Japanese",
"price" => 3000

),

我已阅读并尝试使用explode(),但也在查看fgetcsv(),但没有找到任何示例将其放入带有分隔txt 文件提供的键的数组中。

任何帮助将不胜感激!

【问题讨论】:

  • 在显示的文本分隔符不是\t

标签: php arrays key delimited


【解决方案1】:

要将第一行用作数据键,您需要将该行读入一个单独的数组,然后在您读取的每一行上使用 array_combine() 将键添加到值中...

$fh = fopen("file.txt", "r");
$headers = fgetcsv($fh, 0, "\t");
$data = [];
while ( $row = fgetcsv ($fh, 0, "\t" ) ) {
    $data[] = array_combine($headers, $row);
}
fclose($fh);

这假定文件是制表符分隔的,如果您需要另一个分隔符,请更改 "\t"

【讨论】:

    【解决方案2】:

    您可以尝试对制表符或空格进行分解,例如:

    explode("\t", $your_data)
    

    您可以使用如下正则表达式进行解析:

    preg_match_all("/([^\t])/", $your_data, $matches)
    

    通过简单的方式获取您的数据:

    $your_data = file_get_contents('your/file');
    

    【讨论】:

      猜你喜欢
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-12
      • 2017-05-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多