确定php中的空数组
您好,我正在为一家餐厅的android应用程序开发一个管理后端。我需要列出餐厅提供的所有食物种类。问题是有些类别下可能没有列出任何项目,如果遇到这样的类别,php后端应该只返回一个空列表,但类别名称应该在那里 我目前的代码确定php中的空数组,php,arrays,Php,Arrays,您好,我正在为一家餐厅的android应用程序开发一个管理后端。我需要列出餐厅提供的所有食物种类。问题是有些类别下可能没有列出任何项目,如果遇到这样的类别,php后端应该只返回一个空列表,但类别名称应该在那里 我目前的代码 try { $query = "SELECT category FROM category"; $result= $DBH->query($query); while($row = $result-&
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
变量何时为空,然后手动将类别添加到其中
有什么想法或解决办法吗?您的问题源于这样一个事实,即您有一个“汤”类别,但您没有属于汤类别的任何项目。您应该为空结果添加一个条件,并相应地更改回显数组
if (empty($row1))
{
$main = array('data'=>array('category'=>$cat));
}
else
{
$main = array('data'=>array($row1));
}
您需要此修改
if ($row1 = $value->fetch(PDO::FETCH_OBJ)){
$main = array('data'=>array($row1));
echo json_encode($main);
}else{
echo '{"data":["catagory":"' . $row['category'] . '"]}';
}
难道你不能检查$main是否为空,然后在调用json_eoncode()之前添加默认值吗?对我来说真的很简单。我不确定问题出在哪里。我尝试使用if(empty($main)),它总是返回false,即使第三次它是空的。您应该对$main执行var_dump()并查看它的外观。这显然不是你所想的。var_dump()显示第三次值是array(1){[“data”]=>array(1){[0]=>bool(false)}}你能建议我如何使用它来编写逻辑以满足我的需要吗?我正在尝试这样做,但我很困惑,因为我无法检测它何时为空。如果你能给出一个条件的例子来找出空的结果,那就太好了