PHP:如何访问多维关联数组中的元素

时间:2012-11-20 11:09:24

标签: php multidimensional-array

如何访问多维关联数组中的元素?我知道这很简单,但我无法让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

3 个答案:

答案 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