Php JSON数组上的foreach循环

Php JSON数组上的foreach循环,php,arrays,json,foreach,Php,Arrays,Json,Foreach,谢谢你花时间看我的问题 希望这有意义 我想从JSON数组中提取数据 在下面的数组中,我想在Response>data>Bucket>Equipable>1>items>0>节点的nodes选项卡中循环,看看它是否处于活动状态,如果是,它是什么状态 问题是“节点”部分可以是不同的长度,这个示例有12个结果,但下一个示例只有8个结果,以此类推 对于一个固定的结果,我会使用这个 foreach ($json['Response']['data']['buckets']['Equippable']['1

谢谢你花时间看我的问题

希望这有意义

我想从JSON数组中提取数据

在下面的数组中,我想在Response>data>Bucket>Equipable>1>items>0>节点的nodes选项卡中循环,看看它是否处于活动状态,如果是,它是什么状态

问题是“节点”部分可以是不同的长度,这个示例有12个结果,但下一个示例只有8个结果,以此类推

对于一个固定的结果,我会使用这个

foreach ($json['Response']['data']['buckets']['Equippable']['1']['items']['0']['nodes'] as $Talentnode) {   
$nodeActive[] = $Talentnode['0']['isActivated'];
$nodeState[] = $Talentnode['0']['state'];
}
当我不知道会有多少结果时,我将如何进行foreach循环

  [Response] => Array

        [data] => Array

                [buckets] => Array

                        [Invisible] => Array
                        [Item] => Array
                        [Equippable] => Array

                                [0] => Array
                                [1] => Array

                                        [items] => Array

                                                [0] => Array

                                                        [itemHash] => 320170738
                                                        [bindStatus] => 0
                                                        [isEquipped] => 1
                                                        [itemInstanceId] => 6917529121839082505
                                                        [itemLevel] => 50
                                                        [stackSize] => 1
                                                        [qualityLevel] => 100
                                                        [stats] => Array
                                                        [primaryStat] => Array
                                                        [canEquip] => 1
                                                        [equipRequiredLevel] => 40
                                                        [unlockFlagHashRequiredToEquip] => 2166136261
                                                        [cannotEquipReason] => 0
                                                        [damageType] => 1
                                                        [damageTypeHash] => 3373582085
                                                        [damageTypeNodeIndex] => 5
                                                        [damageTypeStepIndex] => 0
                                                        [progression] => Array
                                                        [talentGridHash] => 2047220462
                                                        [nodes] => Array

                                                                [0] => Array

                                                                        [isActivated] => 1
                                                                        [stepIndex] => 0
                                                                        [state] => 10
                                                                        [hidden] => 
                                                                        [nodeHash] => 0

                                                                [1] => Array

                                                                        [isActivated] => 
                                                                        [stepIndex] => 0
                                                                        [state] => 9
                                                                        [hidden] => 
                                                                        [nodeHash] => 1

                                                                [2] => Array

                                                                        [isActivated] => 1
                                                                        [stepIndex] => 0
                                                                        [state] => 10
                                                                        [hidden] => 
                                                                        [nodeHash] => 2

                                                                [3] => Array

                                                                        [isActivated] => 1
                                                                        [stepIndex] => 0
                                                                        [state] => 10
                                                                        [hidden] => 
                                                                        [nodeHash] => 3

                                                                [4] => Array

                                                                        [isActivated] => 
                                                                        [stepIndex] => 0
                                                                        [state] => 9
                                                                        [hidden] => 
                                                                        [nodeHash] => 4

                                                                [5] => Array

                                                                        [isActivated] => 1
                                                                        [stepIndex] => 0
                                                                        [state] => 10
                                                                        [hidden] => 
                                                                        [nodeHash] => 5

                                                                [6] => Array

                                                                        [isActivated] => 1
                                                                        [stepIndex] => 0
                                                                        [state] => 0
                                                                        [hidden] => 
                                                                        [nodeHash] => 6

                                                                [7] => Array

                                                                        [isActivated] => 1
                                                                        [stepIndex] => 0
                                                                        [state] => 13
                                                                        [hidden] => 1
                                                                        [nodeHash] => 7

                                                                [8] => Array

                                                                        [isActivated] => 
                                                                        [stepIndex] => 0
                                                                        [state] => 9
                                                                        [hidden] => 
                                                                        [nodeHash] => 8

                                                                [9] => Array

                                                                        [isActivated] => 1
                                                                        [stepIndex] => 0
                                                                        [state] => 10
                                                                        [hidden] => 
                                                                        [nodeHash] => 9

                                                                [10] => Array

                                                                        [isActivated] => 
                                                                        [stepIndex] => 0
                                                                        [state] => 9
                                                                        [hidden] => 
                                                                        [nodeHash] => 10

                                                                [11] => Array

                                                                        [isActivated] => 
                                                                        [stepIndex] => 0
                                                                        [state] => 9
                                                                        [hidden] => 
                                                                        [nodeHash] => 11

                                                        [useCustomDyes] => 1
                                                        [artRegions] => Array
                                                        [isEquipment] => 1
                                                        [isGridComplete] => 1
                                                        [perks] => Array
                                                        [location] => 1
                                                        [transferStatus] => 1
                                                        [locked] => 1
                                                        [lockable] => 1
                                                        [objectives] => Array
                                                        [state] => 1

你的循环很好,不管有多少个节点,它都应该在所有节点上迭代

顺便说一句:你应该把它分解成一个变量,这样你的代码就不会那么费劲了:

$nodes = $json['Response']['data']['buckets']['Equippable']['1']['items']['0']['nodes'];

foreach($nodes as $talentNode) {
    // Perform operations on each nodes...

    if($talentNode['isActivated'])
          $nodesActive[] = $talentNode;

     $nodeState[] = $talentNode['state'];
}

$nodesActive; // Array of the nodes active
$nodeState; // Array with the state of each node

你的循环很好,不管有多少个节点,它都应该在所有节点上迭代

顺便说一句:你应该把它分解成一个变量,这样你的代码就不会那么费劲了:

$nodes = $json['Response']['data']['buckets']['Equippable']['1']['items']['0']['nodes'];

foreach($nodes as $talentNode) {
    // Perform operations on each nodes...

    if($talentNode['isActivated'])
          $nodesActive[] = $talentNode;

     $nodeState[] = $talentNode['state'];
}

$nodesActive; // Array of the nodes active
$nodeState; // Array with the state of each node

对于
节点
数组中的任意数量的元素,您的代码都可以正常工作。为什么您认为如果其中有更多或更少的值就不会…?对于
节点
数组中的任何数量的元素,您的代码都可以正常工作。为什么你认为如果其中有更多或更少的值就不会…?谢谢,使用你更新的代码版本,我如何找到哪些节点的[isActivated]=>1和[state]=>10@Ashley我已经更新了我的代码示例,以显示您将如何执行该操作。谢谢,使用您更新的代码版本,我如何找到已激活的节点=>1和[状态]=>10@Ashley我已经更新了我的代码示例,以展示您将如何执行该操作