PHP foreach遍历问题

查看:103
本文介绍了PHP foreach遍历问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

我想学生里,teach_user值输出是老师。而不是老师里输出学生的值。

id pid name
1 0 老师1
2 0 老师2
3 1 学生1
4 1 学生2
5 2 学生3

学生1 teach_user 值里调出 老师1
学生2 teach_user 值里调出 老师1
学生3 teach_user 值里调出 老师2

数组:


Array
(
    [1] => Array
        (
            [id] => 1
            [pid] => 0
            [truename] => 老师1
            [groupid] => 1
            [teach_user] => Array
                (
                )

        )

    [2] => Array
        (
            [id] => 2
            [pid] => 0
            [truename] => 老师2
            [groupid] => 1
            [teach_user] => Array
                (
                )

        )

    [4] => Array
        (
            [id] => 4
            [pid] => 1
            [truename] => 学生1
            [regtime] => 1479318572
            [groupid] => 2
            [teach_user] => Array
                (
                )

        )

    [5] => Array
        (
            [id] => 5
            [pid] => 1
            [truename] => 学生2
            [groupid] => 2
            [teach_user] => Array
                (
                )

        )

    [6] => Array
        (
            [id] => 6
            [pid] => 2
            [username] => ls01
            [truename] => 学生3
            [groupid] => 2
            [teach_user] => Array
                (
                )

        )



想学生循环输出 ,然后老师在teach_user 值里。each_user里的值对应学生pid:

想要效果如下:

[0] => Array
        (
            [id] => 10
            [pid] => 1
            [truename] =>学生1
            [groupid] => 2
            [teach_user] => Array
                (
                    [0] => Array
                        (
                            [id] => 1
                            [pid] => 0
                            [truename] => 老师1
                            [groupid] => 1
                            [teach_user] => Array
                            [teach_user] => Array
                                (
                                )

                        )

                )
[1] => Array
        (
            [id] => 10
            [pid] => 1
            [truename] =>学生2
            [groupid] => 2
            [teach_user] => Array
                (
                    [0] => Array
                        (
                            [id] => 1
                            [pid] => 0
                            [truename] => 老师1
                            [groupid] => 1
                            [teach_user] => Array
                            [teach_user] => Array
                                (
                                )

                        )

                )
 [2] => Array
        (
            [id] => 10
            [pid] => 2
            [truename] =>学生3
            [groupid] => 2
            [teach_user] => Array
                (
                    [0] => Array
                        (
                              [id] => 2
                                [pid] => 0
                                [truename] => 老师2
                                [groupid] => 1
                                [teach_user] => Array
                                    (
                                    )
                                (
                                )

                        )

                )              
         。。。。。
        )

PHP循环写法:

$tree = array();  
foreach($数据库 as $v){  
        $tree[$v['id']] = $v;  
        $tree[$v['id']]['teach_user'] = array();  
}  

foreach($tree as $m=>$n){  
    if($n['tid'] != 0){  
        $tree[$n['tid']]['teach_user'][] = &$tree[$m];
    }
}  

我这样些感觉不对。

解决方案

不知道我理解的对不对,你是想一次性读取所有数据,每个学生对应的老师信息在学生信息数组里面,(不是所有的老师吧?)

            foreach($all_info as $t_key => $t_info){
                if($t_info['pid']==0){
                    $teacher_info[$t_info['id']] = $t_info;
                    unset($all_info[$t_key]);
                }
            }
            foreach($all_info as $s_key => $s_info){
                if(array_key_exists($s_info['pid'],$teacher_info)){
                    $all_info[$s_key]['teach_user'] = $teacher_info[$s_info['pid']];
                }
            }

小白一个希望可以帮到你

这篇关于PHP foreach遍历问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆