在php中确定一个空数组

时间:2014-10-19 19:50:22

标签: php arrays

您好我正在开发一个针对餐馆的Android应用程序的管理员后端。我需要根据他们的类别列出餐馆提供的所有食品。问题是可能有一些类别没有列出任何项目,如果遇到这样的类别,php后端应该只返回一个空列表,但类别名称应该在那里。

到目前为止我的当前代码

try
    {
        $query = "SELECT category FROM category";       
        $result= $DBH->query($query);
        while($row = $result->fetch(PDO::FETCH_ASSOC))
        {
            $cat    = $row['category'];
            $query1 = "SELECT * FROM item WHERE catagory='$cat'";       
            $value  = $DBH->query($query1);
            $row1   = $value->fetch(PDO::FETCH_OBJ);
            $main   = array('data'=>array($row1));
            echo json_encode($main);
        }

        $result->closeCursor();         //Close database connection free resources
        $DBH = null;
    }
    catch(PDOException $e){
        print $e->getMessage ();
        die();
    }

提供这样的输出

{"data":[{"id":"2","name":"Rice","price":"120","description":"Plain Rice","image":"6990_abstract-photo-2.jpg","time":"12 mins","catagory":"Lunch","subcat":""}]}
{"data":[{"id":"4","name":"Dal","price":"5","description":"dadadad","image":"","time":"20 mins","catagory":"Dinner","subcat":""}]}
{"data":[false]}

我的问题是显示{"data":[false]}的最后一个输出应该是这样的{"data":["catagory":"Soup"]}要做到这一点,我需要找出$main变量为空时然后手动添加类别。

有任何想法或解决这种情况吗?

2 个答案:

答案 0 :(得分:1)

你想要这个修改..........

if ($row1   = $value->fetch(PDO::FETCH_OBJ)){
  $main   = array('data'=>array($row1));
  echo json_encode($main);
}else{
  echo '{"data":["catagory":"' . $row['category'] . '"]}';
}

答案 1 :(得分:0)

你的问题源于你有一个'汤'类别,但你没有属于汤类的任何物品。您应该为空结果添加条件并相应地更改回显数组。

  if (empty($row1))
  {
   $main   = array('data'=>array('category'=>$cat));
  }
   else 
  {
    $main   = array('data'=>array($row1));
  }