0

I am trying to achieve the following:

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

This is my current code:

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());

And the result I am currently getting:

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

This 12 in first Array section is actually two separate results next to each other.

I checked other topics here but none can be applied to my case. Can anyone knows a solution here? Any help is appreciated.

1 Answer 1

1

Try this one;

<?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());
Sign up to request clarification or add additional context in comments.

2 Comments

Your code resulted the following result: Array ( [1] => Array [3] => Array [2] => Array )
I edited, can you try again; I also changed $data[$rows['role_id']].=$data2; to $data[$rows['role_id']]=$data2;

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.