也许我会试着以相反的方式问你。 在使用foreach循环创建数组时,我总是遇到问题。
数组应如下所示:
$arr[0]['title'] = 'Title'; --> first foreach-loop
$arr[0]['title'][0]['data'] = 'Text'; --> second foreach-loop
但是当我开始填充第二个foreach循环时,PHP会抛出一个错误:
Cannot use string offset as an array
我希望将这个结果与我的foreach结合,但我找不到我的问题:
array(2) {
["fields"]=>
array(32) {
[0]=>
string(10) "Background"
["Area"]=>
array(3) {
["total"]=>
array(2) {
[0]=>
string(3) "123"
["parent"]=>
array(1) {
[0]=>
string(1) "0"
}
}
["land"]=>
array(1) {
[0]=>
string(3) "456"
}
["water"]=>
array(1) {
[0]=>
string(3) "789"
}
}
修改 我使用以下命令创建我的数组:
$arr = array();
foreach ($nodes as $i => $node) {
$arr[$i]['title'] = $node;
// some if to select the important elements
foreach ($subnodes as $j => $subnode) {
$arr[$i]['title'][$j]['data'] = $subnode;
}
}
答案 0 :(得分:0)
如果从fields
级别开始,则您的第三级密钥不是整数:
array(2) {
["fields"]=> // ROOT LEVEL string
array(32) {
[0]=> // FIRST LEVEL int
string(10) "Background"
["Area"]=> //SECOND LEVEL string
array(3) {
["total"]=> //THIRD LEVEL string
array(2) {
[0]=>
....
或者您尝试使用整数键访问:
$arr[0] //FIRST LEVEL int
['title'] //SECOND LEVEL string
[0] //THIRD LEVEL int <= here is the mismatch
['data'] = 'Text';
答案 1 :(得分:0)
使用以下代码:
$arr = array();
foreach ($nodes as $i => $node) {
$arr[$i]['title'] = array();
$arr[$i]['title']['value'] = $node;
// some if to select the important elements
foreach ($subnodes as $j => $subnode) {
$arr[$i]['title'][$j] = array();
$arr[$i]['title'][$j]['data'] = $subnode;
}
}