为了账号安全,请及时绑定邮箱和手机立即绑定

PHP print_r 显示从 CSV 文件分解的关联数组的内容,但 echo 无法访问其中的单个值

PHP print_r 显示从 CSV 文件分解的关联数组的内容,但 echo 无法访问其中的单个值

PHP
萧十郎 2023-07-01 10:09:46
我有一个 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);


查看完整回答
反对 回复 2023-07-01
  • 1 回答
  • 0 关注
  • 152 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号