PHP foreach/w键+;多维数组部分上的值对

PHP foreach/w键+;多维数组部分上的值对,php,foreach,Php,Foreach,我正在尝试从多维数组访问数据。数组$o包含带有key:product\u id的数组。子数组“data”包含key=>值对(或者至少我认为是这样)。问题在于,当我稍后尝试访问数据时:什么都不起作用 问题:我如何在一个有效的key=>valuepair方法(比如foreach($o[$\u product\u id]['data']as$\u attr=>$\u value))中访问这些数据 原始数据 $_product_id=1; $h = array('header1','header2','

我正在尝试从多维数组访问数据。数组
$o
包含带有key:product\u id的数组。子数组“data”包含
key=>值对(或者至少我认为是这样)。问题在于,当我稍后尝试访问数据时:什么都不起作用

问题:我如何在一个有效的
key=>value
pair方法(比如
foreach($o[$\u product\u id]['data']as$\u attr=>$\u value)
)中访问这些数据

原始数据

$_product_id=1;
$h = array('header1','header2','header3');
$line= array(1,2,3);
$o[$_product_id]['data'] = array_combine($h,array_map('trim', $line));
我可以看到数据就在那里

$data =
array (
  'header1' => 1,
  'header2' => 2,
  'header3' => 3,
);
感谢您的帮助

=======================

加载数据原始方法

$o[$_product_id]['data'] = array_combine($h,array_map('trim', $line));
加载数据替代方法

foreach ($h as $_atr) {
  $o[$_product_id]['data'][$_atr] = trim(array_shift($line));
}
访问数据:未按预期工作

foreach($o[$_product_id]['data'] as $_attr => $_value)
  echo $_attr;
  echo $_value;

好的,您的问题是您的代码:

foreach($o[$_product_id]['data'] as $_attr => $_value)
  echo $_attr;
  echo $_value;
相当于:

foreach($o[$_product_id]['data'] as $_attr => $_value) {
  echo $_attr;
}
echo $_value;
看到了吗?迭代数组,但只输出键和结束后的最后一个值

是的,这是标准的
foreach
行为,没有
{}
-在
foreach
定义之后,循环中只运行一行。所有其他线路均被视为不在回路中。是的,这与python不同)

因此修复很简单-添加
{}

foreach($o[$_product_id]['data'] as $_attr => $_value) {
  echo $_attr;
  echo $_value;
}

你写了那么多字,但我们没有;我看不到原来的阵型。哈哈,我想说清楚。H和LINE是使用Combine合并到键值对的原始数组。
不能按预期工作是什么意思?
?我得到的是attr attr attr val而不是attr val attr val attr valincrable。对我怎么会忽视这个。。。非常感谢