php组数组多维最高第三级

问题描述

数组subclmnsubclmn与另一个数组subclmnrd相关联subclmnclmn是clmn的rd .

1.阵列-C

Array
(
    [0] => Array
        (
            [sn] => 1
            [rd] => 2
            [cntnt] => Student
        )
[1] => Array
    (
        [sn] => 2
        [rd] => 2
        [cntnt] => Teacher
    )

[2] => Array
    (
        [sn] => 3
        [rd] => 3
        [cntnt] => Staff
    )

)

2.数组 -subclmn

Array
(
    [0] => Array
        (
            [sn] => 1
            [rd] => 1
            [clmn] => 1
            [cntnt] => Rabi
        )
[1] => Array
    (
        [sn] => 2
        [rd] => 2
        [clmn] => 1
        [cntnt] => Kiran
    )

[2] => Array
    (
        [sn] => 3
        [rd] => 3
        [clmn] => 1
        [cntnt] => Neharika
    )

)

3.数组 -subclmnsub

Array
(
    [0] => Array
        (
            [sn] => 1
            [rd] => 1
            [clmn] => 1
            [cntnt] => 90%
        )
[1] => Array
    (
        [sn] => 2
        [rd] => 2
        [clmn] => 1
        [cntnt] => 80%
    )

[2] => Array
    (
        [sn] => 3
        [rd] => 3
        [clmn] => 2
        [cntnt] => 70%
    )
[3] => Array
    (
        [sn] => 3
        [rd] => 3
        [clmn] => 2
        [cntnt] => 60%
    )

)

这里要求根据每个数组的clmn将数组分成三层。 Clmn 为顶级数组,subclmn 为二级数组,subclmnsub 为三级数组。

预期输出

Array
(
    [0] => Array
    (
        [sn] => 1
        [rd] => 2
        [cntnt] => Student
        [subclmn] => Array
            (
                [0] => Array
                    (
                        [sn] => 1
                        [rd] => 1
                        [cntnt] => Rabi
                        [subclmnsub] => Array
                            (
                                [0] => Array
                                    (
                                        [sn] => 1
                                        [rd] => 1
                                        [cntnt] => 90%
                                    )
                                [1] => Array
                                    (
                                        [sn] => 2
                                        [rd] => 2
                                        [cntnt] => 80%
                                    )
                            )
                        
                    )
                [1] => Array
                    (
                        [sn] => 2
                        [rd] => 2
                        [cntnt] => Kiran
                        [subclmnsub] => Array
                            (
                                [0] => Array
                                    (
                                        [sn] => 3
                                        [rd] => 3
                                        [cntnt] => 70%
                                    )
                                [1] => Array
                                    (
                                        [sn] => 4
                                        [rd] => 4
                                        [cntnt] => 60%
                                    )
                            )
                        
                    )
            )
    )
)

第一级循环使用 clmn 数组,在 clmn 中,另一个循环用于 subclmn,最后一个循环用于 subclmnsub

foreach($clmn AS $z=>$arr){
    $clmn_subclmn[] = $arr; 
    foreach($subclmn AS $y=>$subarr){
        if($arr['rd']==$subarr['clmn'] AND ($arr['typ']==2 OR $arr['typ']==3)){
            $clmn_subclmn[$z]['subclmn'][]=$subarr;
            foreach($subclmnsub AS $x=>$subarrsub){
                if($subarr['rd']==$subarrsub['clmn']){
                    $clmn_subclmn[$z]['subclmn'][$y]['subclmnsub'][]=$subarrsub;
                }
            }
        }
    }
}

但它只适用于第一个索引,而对于其他索引,它就搞砸了。为什么 kiran 的 subclmnsub 没有插入到 kiran 数组中?

与 foreach 循环相比,它更喜欢任何高效且快捷的方式。

Array
(
    [0] => Array
    (
        [sn] => 1
        [rd] => 2
        [cntnt] => Student
        [subclmn] => Array
            (
                [0] = Array
                    (
                        [sn] => 1
                        [rd] => 1
                        [cntnt] => Rabi
                        [subclmnsub] => Array
                            (
                                [0] => Array
                                    (
                                        [sn] => 1
                                        [rd] => 1
                                        [cntnt] => 90%
                                    )
                                [1] => Array
                                    (
                                        [sn] => 2
                                        [rd] => 2
                                        [cntnt] => 80%
                                    )
                            )
                        
                    )
                [1] => Array
                    (
                        [sn] => 2
                        [rd] => 2
                        [cntnt] => Kiran
                    )
                [3] => Array
                    (
                        [subclmnsub] => Array
                            (
                                [0] => Array
                                    (
                                        [sn] => 3
                                        [rd] => 3
                                        [cntnt] => 70%
                                    )
                                [1] => Array
                                    (
                                        [sn] => 4
                                        [rd] => 4
                                        [cntnt] => 60%
                                    )
                            )
                    )
            )
    )

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)