代码之家  ›  专栏  ›  技术社区  ›  Shiro

使用嵌套foreach的php打印数组

  •  1
  • Shiro  · 技术社区  · 15 年前

    我想问一下如何用组织方式打印出这个数组

    这是我的阵列

    > Array (
    >     [item1 under Category_1] => Category_1
    >     [item2 under Category_1] => Category_1
    >     [item3 under Category_2] => Category_2
    >     [item4 under Category_3] => Category_3
    >     [item5 under Category_3] => Category_3
    >     [item6 under Category_3] => Category_3
    >     [item7 under Category_3] => Category_3
    >     [item8 under Category_3] => Category_3 )
    

    输出应如下所示:

    Category_1
      item1
      item2
    Category_2
      item3
    Category_3
      item4
      item5
      item6
      item7
      item8
    

    我有什么办法可以做到吗?或者我排列数组的逻辑方式是错误的?

    我的数据库表记录如下

    category item
       1       1
       1       2
       2       3
       3       4
       3       5
       3       6
       3       7
       3       8
    

    有人能帮忙吗?

    2 回复  |  直到 15 年前
        1
  •  4
  •   merkuro    15 年前

    您可能需要调整布局和换行符,但我认为您得到了以下想法:

    asort($your_array);
    foreach($your_array as $key => $value){
      if($key_temp != $key){
        echo $key."\r\n";
      }  
      echo " ".$value."\r\n";  
      $key_temp = $key;
    }
    
        2
  •  1
  •   Haim Evgi    15 年前

    首先查询

    $myarray = array();
    $result = mysql_query("SELECT category , item FROM mytable order by category , item ");
    
    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    
    $myarray[$row['category'] ][]  = $row['item'];
    
    }
    

    现在你得到一个二维数组

    现在在2个循环中运行此数组(foreach或for) 然后打印该企业的密钥,然后打印该企业中的项目

    foreach ($array as $key => $val) {
        print "Key $key\n";
        for($i=0;$i<count($val);$i++)
           print "val $val[$i]\n";
    
    
    }
    

    这就是你可以改进的例子; 我希望这个主意是清楚的