如何访问多维关联数组中的元素?我知道这很简单,但我无法让php.net示例工作。
$ csv_array包含:
Array
(
[0] => Array
(
['name'] => 'DUMMY NAME'
['email'] => 'DUMMYEMAIL'
['Volunteering'] => '1'
)
)
然而,当$ row为0时,print $csv_array[$row]['email'];
不会打印任何内容 - 不应该打印'DUMMYEMAIL'吗?
发生这种情况的示例位于http://thomasash.philosofiles.com/uploads/examples/php/parsecsv/csv1.php - 源代码http://pastebin.com/nf2Xft7J
答案 0 :(得分:2)
你怎么知道$ row是0,因此在位置0访问数组?
这将有效;
print $csv_array[0]['email'];
或使用循环;
foreach($csv_array as $rowNum => $data)
{
echo $rowNum;
var_dump($data);
}
答案 1 :(得分:0)
运行完全相同的代码,将其作为唯一的替代品:
$csv_array = Array
(
0 => Array
(
'name' => 'DUMMY NAME',
'email' => 'DUMMYEMAIL',
'Volunteering' => '1',
'Blog' => '1',
'News' => '1',
'chapter_interested_in' => 'Oxford',
'how_you_heard' => 'Other',
'how_you_heard_other' => 'xxx'
)
);
而不是:
$file_path = "form-output/new_interest_list.csv";
require_once('parsecsv-0.3.2/parsecsv.lib.php');
$csv = new parseCSV($file_path);
//$csv->auto('data.csv');
$csv_array = $csv->data;
(我的替换是提供的链接中print_r($csv_data)
的输出)
它按预期工作:
==PRINT==
$csv_array[$row]['email'] is DUMMYEMAIL
我唯一的猜测是,您使用的特定PHP版本在解析双引号字符串时存在错误。在第26行你有这个:
print "\n=KEYS FOR ROW $row=\n\n";
...在我的安装中(我假设)将$ row打印为0,但之后为其分配“\ n \ n”。不会发生在我身上,但我没有看到任何其他可能的原因。尝试在此行上使用连接和/或在第26行之前打印$csv_array[$row]['email']
- 它应该给出预期的结果。
答案 2 :(得分:0)
我敢打赌,这是某种编码问题。从csv文件中检索的'email'
密钥名称不等于您在脚本中用于索引数组的'email'
值。
尝试将array_keys
指令结果的每个键与'email'
字符串进行比较,看看是否匹配。
顺便说一句,修复你的循环:
for($row=0; $row < count($csv_array); $row++) {
// ^^^ 'strictly less than' is required there