Php JSON数组上的foreach循环
谢谢你花时间看我的问题 希望这有意义 我想从JSON数组中提取数据 在下面的数组中,我想在Response>data>Bucket>Equipable>1>items>0>节点的nodes选项卡中循环,看看它是否处于活动状态,如果是,它是什么状态 问题是“节点”部分可以是不同的长度,这个示例有12个结果,但下一个示例只有8个结果,以此类推 对于一个固定的结果,我会使用这个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
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我已经更新了我的代码示例,以展示您将如何执行该操作