2016-04-10 48 views
0

我努力實現以下目標:PHP嵌套陣列,而內部while循環

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個實際上是兩個彼此相鄰的獨立結果。

我在這裏查了其他話題,但沒有人可以應用於我的情況。任何人都可以在此知道解決方案任何幫助表示讚賞。

回答

1

試試這個;

<?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()); 
+0

您的代碼導致以下結果:'陣列([1] =>數組[3] =>數組[2] =>數組)' – De7ilx

+1

我編輯,可以再次嘗試;我還改變了'$ data [$ rows ['role_id']]。= $ data2;'到'$ data [$ rows ['role_id']] = $ data2;' – mertizci

+0

謝謝!它實際上有效! – De7ilx