我正在编写读取.csv文件并在PHP中创建关联数组的代码。 我想组织数组,使最后一列之前的每一列(按顺序)都是关联数组的级别。 在非广义情况下:
$data = array();
$file =fopen("data.csv", "r");
while (($line = fgetcsv($file)) !== FALSE) {
$var1 = $line[0];
$var2 = $line[1];
$value = $line[2];
$data[$var1][$var2] = $value;
}
我希望能够做到这一点,无论有多少列(即,var1...varN)。它的组织方式是,变量(列)1-N唯一标识每一行,并且所需的值始终是最后一列。
只需在while
中放入另一个while
,考虑到您从文件中获取的那一行中有多少列。这应该足够了。
我能够通过构建代码行并使用 eval 语句来做到这一点:
$str = '$allData["data"]';
for($x=0; $x<$numVars; $x++) {
$var = $line[$x];
if(($x+1) != $numVars) {
$str .= "['$var']";
}
}
$str .= "=";
$str .= $line[$numVars-1];
$str .= ";";
eval($str);