2016-04-10 26 views
0

しばらくの内側に、私は次のことを達成しようとしています:PHPネストされた配列のループ

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番目の配列セクションは実際には互いに隣り合う2つの別々の結果です。

私はここで他のトピックをチェックしましたが、私の場合は何も適用できません。誰もがここで解決策を知っていますか?どんな助けもありがとうございます。

答えて

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

関連する問題