繁体   English   中英

在while循环中带有while的PHP嵌套数组

[英]PHP Nested arrays with while inside while loop

我正在努力实现以下目标:

Array (
    [1] => Array (
        [0] => 1
        [1] => 2
    )
    [3] => Array (
        [0] => 5
    )
    [2] => Array (
        [0] => 3
    )
)

这是我当前的代码:

function create_role_node_array()
{
    if($_SESSION['userid'])
    {
        $query1 = "SELECT * FROM auth_user_role_relation_list WHERE user_id='".$_SESSION['userid']."' ORDER BY creation_time ASC";
        $result1 = mysqli_query($GLOBALS['c'], $query1);
        $rows='';
        $data=array();
        if(!empty($result1))
            $rows=mysqli_num_rows($result1);
        else
            $rows='';
        if(!empty($rows))
        {
            while($rows=mysqli_fetch_assoc($result1))
            {
                $query2 = "SELECT * FROM auth_node_role_relation_list WHERE role_id='".$rows['role_id']."' ORDER BY group_id ASC, creation_time ASC";
                $result2 = mysqli_query($GLOBALS['c'], $query2);
                $rows2='';
                $data2=array();
                if(!empty($result2))
                    $rows2=mysqli_num_rows($result2);
                else
                    $rows2='';
                if(!empty($rows2))
                {
                    while($rows2=mysqli_fetch_assoc($result2))
                    {
                        $data2[0].=$rows2['node_id'];
                    }
                }
                $data[$rows['role_id']].=$data2[0];
            }
            return $data;
        }
    }
}
print_r(create_role_node_array());

我目前得到的结果是:

Array ( [1] => 12 [3] => 5 [2] => 3 )

实际上,第一个“数组”部分中的这12个是彼此相邻的两个独立结果。

我在这里检查了其他主题,但没有一个适用于我的情况。 谁能在这里知道解决方案? 任何帮助表示赞赏。

试试这个;

<?php
   function create_role_node_array()
{
    if($_SESSION['userid'])
    {
        $query1 = "SELECT * FROM auth_user_role_relation_list WHERE user_id='".$_SESSION['userid']."' ORDER BY creation_time ASC";
        $result1 = mysqli_query($GLOBALS['c'], $query1);
        $rows='';
        $data=array();
        if(!empty($result1))
            $rows=mysqli_num_rows($result1);
        else
            $rows='';
        if(!empty($rows))
        {
            while($rows=mysqli_fetch_assoc($result1))
            {
                $query2 = "SELECT * FROM auth_node_role_relation_list WHERE role_id='".$rows['role_id']."' ORDER BY group_id ASC, creation_time ASC";
                $result2 = mysqli_query($GLOBALS['c'], $query2);
                $rows2='';
                $data2=array();
                if(!empty($result2))
                    $rows2=mysqli_num_rows($result2);
                else
                    $rows2='';
                if(!empty($rows2))
                {
                    $i=0;
                    while($rows2=mysqli_fetch_assoc($result2))
                    {
                        $data2[]=$rows2['node_id'];
                        $i++;
                    }
                }
                $data[$rows['role_id']]=$data2;
                unset($data2);
            }
            return $data;
        }
    }
}
print_r(create_role_node_array());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM