无法从动态多维数组中获取数据

时间:2018-05-28 07:35:00

标签: php arrays

我有array个名字:

$groups = array
  (
      'first', 'second', 'third', 'fourth', 'fifth', 'sixth', 'seventh', 'eighth'
  );

然后我为每个创建一个数组,并将第二级数组放入其中:

for($i = 0; $i < count($groups); ++$i) {
  $$groups[$i] = array ();
  array_push($$groups[$i], array('col1' => 'data', 'col2' => 'data'));
  array_push($$groups[$i], array('col1' => 'data2', 'col2' => 'data2'));
}

当我尝试循环并获取任何数据时,我得到的只是“数组”。

for($i = 0; $i < count($groups); ++$i) {
  for($j = 0; $j < count($$groups[$i]); ++$j) {
    echo($$groups[$i][$j][0] . " - " .$$groups[$i][$j][1]);
}

我很确定问题是我尝试解决这些底层数组的问题,但无法找到正确的方法。

P.S。:如果我var_dump $$groups[$i]它返回所有内容,那么数据就在那里。

1 个答案:

答案 0 :(得分:1)

$$groups[$i]没有按照您的想法执行,PHP将其解释为($$groups)[$i]。你真正想要的是${$groups[$i]}。如果您有关于通知级错误的错误报告,您会看到很多NOTICE Array to string conversion on line number xx条消息。看一下get_defined_vars()的输出,你会发现你有一个名为Array的数组,而不是一组名为firstsecond等的数组。

此外,第三级数组中的索引为col1col2,而不是01

试试这个:

for($i = 0; $i < count($groups); ++$i) {
    ${$groups[$i]} = array ();
    array_push(${$groups[$i]}, array('col1' => 'data', 'col2' => 'data'));
    array_push(${$groups[$i]}, array('col1' => 'data2', 'col2' => 'data2'));
    // print_r(${$groups[$i]});
}

for($i = 0; $i < count($groups); ++$i) {
    for($j = 0; $j < count(${$groups[$i]}); ++$j) {
        echo(${$groups[$i]}[$j]['col1'] . " - " .${$groups[$i]}[$j]['col2']);
  }
}

输出:

data - data
data2 - data2
data - data
data2 - data2
data - data
data2 - data2
data - data
data2 - data2
data - data
data2 - data2
data - data
data2 - data2
data - data
data2 - data2
data - data
data2 - data2