我有一个产品分类 是2级分类的手机  --- 没有2级分类
笔记本电脑  --- 下面有 东芝,sony,IBM
数码相机  -- 佳能
存储卡  ---没有2级分类现在问题是这个2维数组怎么保存,然后需要传递给模板变量,然后模板在又foreach循环出来,当数组下面没有2级分类的时候就会报错,如果不用数组,还有没有其他的办法?

解决方案 »

  1.   

    //你的数组是怎么定义的,是这样吗?
    $ar = array('手机' => array(), '笔记本电脑' => array('IBM', 'SONY', '东芝'), '数码相机' => '佳能', '存储卡' => array());
    print_r($ar);
    /*
    Array
    (
        [手机] => Array
            (
            )    [笔记本电脑] => Array
            (
                [0] => IBM
                [1] => SONY
                [2] => 东芝
            )    [数码相机] => 佳能
        [存储卡] => Array
            (
            ))*/
      

  2.   

    估计问题出在模板foreach处理上。
      

  3.   

    就是报foreach 搜索空数组的错误
      

  4.   

    $mzrui=$mz_mysql->mysql_givemore("select * from mzrui_kind where tid='0'");
    if($mzrui)
    {
    foreach($mzrui as $mzrui_name)
    {
    $mzrui_names[]=$mzrui_name[name];
    $mzrui2=$mz_mysql->mysql_givemore("select * from mzrui_kind where tid='$mzrui_name[sid]'");
    if($mzrui2)
    {
    foreach($mzrui2 as $mzrui_name2)
    {
    $mzrui_names[][]=$mzrui_name2[name];
    }
    }
    }
    }PHP 代码是这样的打印出来的数组是  
    Array ( [0] => 笔记本电脑 [1] => 手提电脑 [2] => 手机 [3] => Array ( [0] => NOKIA ) [4] => 非诚勿扰 [5] => Array ( [0] => 猫吃鱼 ) [6] => 东芝 ) 
      

  5.   

    这样写当然是这样啦 
    foreach($mzrui as $mzrui_name)
    {
    $mzrui2=$mz_mysql->mysql_givemore("select * from mzrui_kind where tid='$mzrui_name[sid]'");
    if($mzrui2)
    {
    foreach($mzrui2 as $mzrui_name2)
    {
    $mzrui_names[$mzrui_name[name]][]=$mzrui_name2[name];
    }
    }
      

  6.   

    $mz_mysql->mysql_givemore($sql),没有查询到符合条件的记录时,返回值是什么?
      

  7.   

    $mzrui=$mz_mysql->mysql_givemore("select * from mzrui_kind where tid='0'");
    if($mzrui) {
       foreach($mzrui as $mzrui_name) {
          $mzrui_names[]=$mzrui_name[name]; //这里的键值难道不用加引号吗?!
          $mzrui2=$mz_mysql->mysql_givemore("select * from mzrui_kind where tid='$mzrui_name[sid]'");
          if($mzrui2) { //报错的是这一行吧?因为上面的查询不一定有结果,但查询语句本身是执行成功的
          //所以,要先知道mysql_givemore()的返回值是怎么样的,从代码来看,查询到记录时返回的是个数组
          //没有符合条件的记录时呢(也就是没有子类的情况下)
             foreach($mzrui2 as $mzrui_name2) {
                $mzrui_names[][]=$mzrui_name2[name];
             }
          }
          //上面的if()条件判断及foreach循环改成这样试试:
          if (count($mzrui2) > 0) {
             $ar = array();
             foreach($mzrui2 as $v) $ar[] = $v['name'];
             $mzrui_names[] = $ar;
          }
       }
    }