$arr1=array(array('AAA','bbb',1),
   array('AAA','ccc',0),
   array('AAA','ddd',0),
   array('BBB','aaa','111'),
   array('BBB','aaa','222'));
//*将上边数组封装成,如果值为0的话,丢弃
AAA
    bbb
        1
    ccc
    ddd
BBB
    aaa
     111
    aaa
     222*/<ul>
<li>AAA 
    <ul><li>bbb
         <ul><li>1</li></ul></li>
       <li>ccc</li>
        <li>ddd</li></ul></li>
......
</ul>

解决方案 »

  1.   

    先对数组进行进行行列转换后再使用循环就容易达到目的,以下代码测试可行:$arr1=array(array('AAA','bbb',1),
           array('AAA','ccc',0),
           array('AAA','ddd',0),
           array('BBB','aaa','111'),
           array('BBB','aaa','222'));function arr_rowtocol($arr)//定义函数对二维数组进行行列转换
    {
    $newarr=array();
    foreach($arr as $temp)
    {
    if(!($newarr[$temp[0]][$temp[1]]))
    $newarr[$temp[0]][$temp[1]]=array();
    array_push($newarr[$temp[0]][$temp[1]],$temp[2]);
    }
    return $newarr;
    }$newarr=arr_rowtocol($arr1);//调用数组行列转换函数echo "<ul>";
    foreach($newarr as $key=>$value)
    {
      echo "<li>$key \n<ul>";
      foreach($value as $key1=>$value1)
      {
        echo "<li>$key1 \n<ul>";
    foreach($value1 as $li)
    {
      if($li!=0)
      echo "<li>$li </li>";
    }
    echo "</ul></li>";
      }
      echo "</ul></li>";
    }
    echo "</ul>";
      

  2.   

    厉害啊,虽然我已经写出来了,并且和你的不一样,我是直接输出的,懒得转到另一数组中去,
    还有就是,代码有几个运行时有几个警告,显示xxx未定义,还有最后就是不需要‘\n’ 回车符;这个我是用来处理从mysql查询到的分类的,
    +----------------------+--------------+--------+
    | name                 | name         | name   |
    +----------------------+--------------+--------+
    | televisions          | tube         | NULL   | 
    | televisions          | lcd          | NULL   | 
    | televisions          | plasma       | NULL   | 
    | portable electronics | mp3 players  | flash  | 
    | portable electronics | mp3 players  | u-disk | 
    | portable electronics | cd players   | NULL   | 
    | portable electronics | 2 way radios | NULL   | 
    +----------------------+--------------+--------+
    7 rows in set (0.00 sec)
      

  3.   

    01:14:43 凌晨??强人啊
    if(!($newarr[$temp[0]][$temp[1]]))------------->if(!isset($newarr[$temp[0]][$temp[1]]))
     
      

  4.   

    不加 isset 会现出象错误提示,类似于undefined xxxx