我有一个 CSV 文件,使一些 MySQL 变量易于阅读,其中行中的第一项是 MySQL 字段名称,第二项是要在字段中填写的用户友好名称,如下所示:Hymn1,First Hymn,Hymn2,Second Hymn,date,Date,C2W,Call To Worship,然后,我将创建单独的列表,以便教堂中的人们可以输入与他们相关的数据 - 音乐总监将输入国歌和奉献的姓名、作者和歌词等。我将使用 MySQL 变量名称填充该列表,并从中生成页面。我想将该 CSV 转换为数组,以便生成一个页面,该页面将以用户可读的方式回显字段标签的字段名称。我认为我的部分问题是 CSV 文件是横向的。大多数答案都假设第一行是字段名称,其余是内容,但这里的情况并非如此。如果这是 Python,我只会将它们压缩到字典中,但在 PHP 中显然你使用关联数组。我打开 CSV 并将结果放入一个名为 的字符串中$keys,并回显该字符串以验证它是否如上所示,确实如此。然后我声明了数组,去掉了换行符并将其替换为第二个逗号,然后用管道替换了第二个逗号:$assoc = array();$keys = str_replace("\r", ",", $keys);$keys = str_replace(",,", "|", $keys);之后,我将 $keys 字符串分解为一个新变量,并以管道作为分隔符。到目前为止,一切都很好。$newvar = explode("|", $keys);最后,我分解了数组中每个键中的每个逗号分隔项,并在 foreach 循环中将它们相互关联。foreach($newvar as $iterator) { $mini = explode(",", $iterator); $mini[0] = ltrim($mini[0], "\n"); $assoc[$mini[0]] = $mini[1]; }print_r当我在我的阵列上做一个时$assoc,它给了我我所希望的一切。从源码来看:Array( [Hymn1] => First Hymn [Hymn2] => Second Hymn [date] => Date [C2W] => Call to Worship)但是 - 这就是问题部分 - 当我尝试使用 or 访问数组中的各个元素时,echo $assoc['Hymn1'];我echo $assoc->Hymn1;什么也没得到。我可以回显“Hello World”,它会出现,但没有任何结果。我也尝试过 str_getcsv,但它只创建每个逗号分隔项目的数组,或者与此数组类似的数组,当我尝试回显每个项目时,最终不会打印任何内容。
1 回答

慕村225694
TA贡献1880条经验 获得超4个赞
您可以通过两种方式访问数据:使用字段名称或用户友好版本。
此代码读取文件并在读取文件时创建两个数组。 $variables是使用Hymn1值作为键,$names使用First Hymn值作为键。
$variables = [];
$names= [];
$fh = fopen($fileName, "r");
while ( $row = fgetcsv($fh)) {
$variables [$row[0]] = $row[1];
$names [$row[1]] = $row[0];
}
fclose($fh);
print_r($variables);
print_r($names);
- 1 回答
- 0 关注
- 152 浏览
添加回答
举报
0/150
提交
取消