【问题标题】:How can I use foreach to process a multidimensional php array?如何使用 foreach 处理多维 php 数组?
【发布时间】:2016-02-01 00:47:37
【问题描述】:

我用json_decode解析了一个JSON文件,结果是一个长的多维数组,如下所示:

Array
(
[Basic] => Array
    (
        [0] => Array
            (
                [text] => Taunt.
                [playerClass] => Shaman
                [locale] => enUS
                [mechanics] => Array
                    (
                        [0] => Array
                            (
                                [name] => Taunt
                            )
                    )
            )
    )

[Classic] => Array
    (
        [0] => Array
            (
                [cardId] => CS2_188o
                [name] => 'Inspired'
                [mechanics] => Array
                    (
                        [0] => Array
                            (
                                [name] => OneTurnEffect
                            )
                    )
            )
    )
)

我想使用foreach 将数据插入到数据表中,但我无法使其与这个多维数组一起工作。我该怎么做?

【问题讨论】:

  • 你的问题是什么,你的问题是什么?
  • 我的问题是我无法为这个多维数组构建 foreach 代码。
  • 是的,所有社区都允许您这样做。阅读文档以了解如何操作:php.net/manual/en/control-structures.foreach.php
  • 欢迎来到 SO。我浏览了您的代码并删除了许多具有相似结构的条目。这样,您的问题的阅读速度要快得多,并且任何适用于剩余数据的解决方案都将允许您读取原始数据(我还删除了几个多余的空白行,这些空白行只会将内容隔开)。如果您可以在要将此数据放入的数据表中 edit ,那将非常有帮助。 (例如,如果不使用 foreach,您将如何处理单个信息?)

标签: php arrays json multidimensional-array foreach


【解决方案1】:

你必须使用递归数组来做到这一点

function build($fullArray)
{
    foreach ($fullArray as $item) {
          if (is_array($item)){
            build($item);
          }
          else{
              echo $item["cardId"];
              echo $item["name"];
              ....
        }
    }
}

【讨论】:

  • 递归是必要的。 +1
【解决方案2】:

使用这个:

foreach ($items as $item) {
  if (is_array($item)){
    foreach ($item as $it) {
      echo $it["name"];
    }
  }
  echo $item["cardId"];
  echo $item["name"];
  ....
}

【讨论】:

  • 这使用单个数组是正确的,但是在这里我们有一个小大数组,如您所见 Arrary -> Arrary -> Array。
  • 我改变了答案:检查当前 $item 是否是一个数组。
  • 我稍作改动,在第二个 foreach 中包含一些数组。谢谢您的帮助。 :)
猜你喜欢
  • 2017-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-01
  • 2014-07-21
  • 2016-01-14
  • 2021-06-09
相关资源
最近更新 更多