2012-11-20 77 views
0

如何访问多维关联数组中的元素?我知道这很简单,但我无法获得php.net示例的工作。PHP:如何访问多维关联数组中的元素

$ csv_array包含:

Array 
(
    [0] => Array 
     (
      ['name'] => 'DUMMY NAME' 
      ['email'] => 'DUMMYEMAIL' 
      ['Volunteering'] => '1' 
     ) 
) 

然而,当$行是0运行print $csv_array[$row]['email'];没有打印任何东西 - 不应该将其打印 'DUMMYEMAIL'?其中,这种情况正在发生的

例子是http://thomasash.philosofiles.com/uploads/examples/php/parsecsv/csv1.php - 在http://pastebin.com/nf2Xft7J

+0

怎么样打印$ csv_array [0] [ '电子邮件']? – Marty

+0

做$ cvs_array [$ row] [1]的工作? – Naryl

+0

语法明智,没有任何错误。确保$ row的值是有效的而不是越界。 尝试直接打印$ csv_array [0] ['email']并检查。 –

回答

2

源代码,你怎么知道$行是0,因此访问数组在位置0?

这将工作;

print $csv_array[0]['email']; 

或者使用循环;

foreach($csv_array as $rowNum => $data) 
{ 
    echo $rowNum; 
    var_dump($data); 
} 
+0

在他的代码中,你可以看到他已经将该行初始化为0,所以这看起来不是问题。 – Naryl

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"; 

...这(我认为)在您安装打印$行为0,但事后分配“\ n \ n”来了。不会发生在我的最后,但我没有看到任何其他可能的原因。尝试在此行上使用连接和/或在第26行之前打印$csv_array[$row]['email']- 应该给出预期的结果。

0

我敢打赌,这是某种编码问题。从csv文件中检索到的'email'密钥名称不等于您在脚本中用于索引数组的'email'值。

尝试将array_keys指令结果的每个关键字与'email'字符串进行比较,看看是否有匹配项。

顺便说,解决您的循环:

for($row=0; $row < count($csv_array); $row++) { 
//    ^^^ 'strictly less than' is required there