将 txt 分隔为一个数组,其中的键由分隔 txt 的第一个单元格提供

Delimited txt into an array with keys provided by first cell of delimieted txt

ID  OID Title   Description Option  Price
01  01JAP   Japanese Model  Japanese Model of the Dave Smith    Japanese    ",000 "
02  02ENG   English Model   English Model of the dave Smith     english ",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 文件提供的键。

任何帮助将不胜感激!

要将第一行用作数据键,您需要将该行读入一个单独的数组,然后在您读取的每一行上使用 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"

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

explode("\t", $your_data)

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

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

获取您的数据只需:

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