三维阵列变化

时间:2017-02-16 16:39:17

标签: php arrays

我从API调用三维数组,但是在对API的不同调用之后,数据返回略有不同,有时数组键会发生变化。例如,第一阵列可以在一种情况下涉及类型一,而在另一种情况下,它涉及类型二。它的布局就像这样

Array
(
    [id] => 
    [stats] => Array
        (
            [0] => Array
                (
                    [type] => 
                    [option] => 
                    [modifyDate] => 

如前所述,有时它涉及不同的类型,是否有一种方法可以根据内部的内容获取数组,例如,如果"类型"在第一个数组中等于类型1然后将其分配给变量Type1?

也许在一个更好的例子中,在场景1中它显示了这一点:

Array
(
    [summonerId] => 39562006
    [playerStatSummaries] => Array
        (
            [0] => Array
                (
                    [playerStatSummaryType] => AramUnranked5x5
                    [wins] => 4
                    [modifyDate] => 1481110651000
                    [aggregatedStats] => Array
                        (
                            [totalChampionKills] => 48
                            [totalTurretsKilled] => 2
                            [totalAssists] => 171
                        )

                )

而在方案2中它显示了这个

Array
(
    [summonerId] => 34951469
    [playerStatSummaries] => Array
        (
            [0] => Array
                (
                    [playerStatSummaryType] => CAP5x5
                    [wins] => 16
                    [modifyDate] => 1481117277000
                    [aggregatedStats] => Array
                        (
                            [totalChampionKills] => 325
                            [totalMinionKills] => 1996
                            [totalTurretsKilled] => 26
                            [totalNeutralMinionsKilled] => 1048
                            [totalAssists] => 298
                        )

                )

经过一些试验和错误后,我认为foreloop会很好,因为它可以迭代每个阵列并从阵列中输出所选择的键但是我仍然不确定如何做到这一点,任何建议?

1 个答案:

答案 0 :(得分:0)

我的建议与此答案类似:https://stackoverflow.com/a/42708457/2943403 不幸的是,如果没有相关输入数组和所需输出数组的相关样本,我无法提供更详细的信息。

// $new=array(...);
// $old=array(...);
foreach($new as $new_key=>$new_subarray){
    foreach(array_diff_key($old,range(0,$new_key)) as $old_subarray){  // no dupe loops
        // perform checks between $new_subarray and $old_subarray
    }
}