如何使用带有foreach的PHP创建此数组

如何使用带有foreach的PHP创建此数组,php,arrays,foreach,Php,Arrays,Foreach,也许我会试着用相反的方式问你。 我在使用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 我希望我的for

也许我会试着用相反的方式问你。 我在使用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;
  }
}

如果从
字段开始,则第三级密钥不是整数:

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';
$arr[0]//一级整数
['title']//第二级字符串

[0]//第三级int使用以下代码:

$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;
  }
}

您正在使用的代码是什么?您不能将值分配给
$arr[0]['title']
,然后将值分配给
$arr[0]['title'][0]['data']
。将
$arr[0]['title']
替换为
$arr[0]['title']['value']
。这应该可以解决错误。@Singhal我添加了我的foreach loopsHow,关于你发布了一些你试图读取的数据,而不是数组的外观,你是从某个地方获取数据的,是RSS吗?XML?你能提供你需要阅读的数据的更多细节吗?也许我们能为你提供更多帮助。另外,你发布的数组不完整,上面有2个条目,但只显示了其中的一个条目,基本上是其他数组中的一组数组组成了一个大的多维数组,很容易重新创建,但没有指导原则,这是不值得的。我真的很想发布它,但目前我只能在屏幕上打印它。它包含超过500行代码。我使用xPath在网站上爬行,并且能够以正确的顺序查看结果。但我想将其保存到数组中,然后将其写入数据库。但我不确定你是否真的需要这些数据。我发布了foreach循环打印的一个结果。当我无法先写入/创建时,如何尝试访问-(哦,糟糕。我不是从“字段”级别开始的。我是从第一个整数开始的。在本例中为[0]。是的,您将其标记为第一个级别。那么您有解决方案了吗?不,我没有。我在创建该数组时总是出现错误:-(你在第二个框中的意思是什么?你写了//第三级int谢谢你的帮助。我试过了,但不幸的是最后一行再次抛出相同的错误:不能将字符串偏移量用作数组。我刚刚看到你的代码顶部。为什么你在第一个循环中写“value”,在第二个循环中使用整数?@Tipo这是因为PHP数组是一个数组。)实际关联映射。可以在同一数组中使用整数或字符串作为键。