如何使用PHP从Tabdelimited文件创建结构化数组?
我在读取以制表符分隔的文件时遇到问题 我的文件的结构是:如何使用PHP从Tabdelimited文件创建结构化数组?,php,arrays,tab-delimited,Php,Arrays,Tab Delimited,我在读取以制表符分隔的文件时遇到问题 我的文件的结构是: Field 1 Field 2 Field 3 Element11 Element12 Element13 Element21 Element22 Element23 Element31 Element32 Element33 我想从该文件创建一个具有以下结构的数组: $csv = array( array( 'Field 1' => 'Element11',
Field 1 Field 2 Field 3
Element11 Element12 Element13
Element21 Element22 Element23
Element31 Element32 Element33
我想从该文件创建一个具有以下结构的数组:
$csv = array(
array( 'Field 1' => 'Element11',
'Field 2' => 'Element12',
'Field 3' => 'Element13',
),
array( 'Field 1' => 'Element21',
'Field 2' => 'Element22',
'Field 3' => 'Element23',
),
array( 'Field 1' => 'Element31',
'Field 2' => 'Element32',
'Field 3' => 'Element33',
)
);
我该怎么做
如果要跳过标题行,只需在进入循环之前调用一次fgets()
。或者,如果您希望数组如上所示具有关联性:
$result = array();
$fp = fopen('/path/to/file','r');
$headers = fgetcsv($fp, 0, "\t");
$row = 0;
while (($line = fgetcsv($fp, 0, "\t")) !== FALSE) if ($line) {
for ($col = 0; isset($line[$col]); $col++) {
$result[$row][$header[$col]] = $line[$col];
}
$row++;
}
fclose($fp);
print_r($result);
也可以将头作为所需的数组键获取
$result = array();
$fp = fopen('/path/to/file','r');
if (($headers = fgetcsv($fp, 0, "\t")) !== FALSE)
if ($headers)
while (($line = fgetcsv($fp, 0, "\t")) !== FALSE)
if ($line)
if (sizeof($line)==sizeof($headers))
$result[] = array_combine($headers,$line);
fclose($fp);
print_r($result);
实际上,该文件不是通用的(CSV):)CSV已成为。。“数据被某物分隔开”,正如一位同事在过去常说的那样;“字符分隔值”@colheath这就是为什么我提供了
“\t”
作为fgetcsv()
的第三个参数:-是啊。。。遗漏了该参数(:
$result = array();
$fp = fopen('/path/to/file','r');
if (($headers = fgetcsv($fp, 0, "\t")) !== FALSE)
if ($headers)
while (($line = fgetcsv($fp, 0, "\t")) !== FALSE)
if ($line)
if (sizeof($line)==sizeof($headers))
$result[] = array_combine($headers,$line);
fclose($fp);
print_r($result);