我有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]
它返回所有内容,那么数据就在那里。
答案 0 :(得分:1)
$$groups[$i]
没有按照您的想法执行,PHP将其解释为($$groups)[$i]
。你真正想要的是${$groups[$i]}
。如果您有关于通知级错误的错误报告,您会看到很多NOTICE Array to string conversion on line number xx
条消息。看一下get_defined_vars()
的输出,你会发现你有一个名为Array
的数组,而不是一组名为first
,second
等的数组。
此外,第三级数组中的索引为col1
和col2
,而不是0
和1
。
试试这个:
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