php打印数组使用嵌套的foreach

时间:2009-06-26 05:13:44

标签: foreach

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

这是我的数组

> 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 个答案:

答案 0 :(得分:4)

您可能需要调整布局和换行符,但我认为您明白了这一点:

asort($your_array);
foreach($your_array as $key => $value){
  if($key_temp != $key){
    echo $key."\r\n";
  }  
  echo " ".$value."\r\n";  
  $key_temp = $key;
}

答案 1 :(得分:1)

首先是查询

$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) 然后打印entery的键,然后打印此entery中的项目

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


}

这是你可以改进它的例子; 我希望这个想法很明确