我正在尝试将数据传回我的值映射,有条件地取决于mySQL数据库中的布尔值。
我查询我的数据库并将信息存储在$ results中。然后我使用下面的代码构建我的值图。
//Query database
if(!$results = $link->query($sql)){
die("Query Unsuccessful");
}
$valueMap = array();
while ($data = $results->fetch_assoc()){
$valueMap[] = array(
'title' => $data['title'],
'lat' => $data['lat'],
'lng' => $data['lng'],
'description' => $data['description'],
'descriptionPub' => $data['descriptionPub'],
);
}
截至目前,我正在通过JSON字符串传递所有这些数据。但是,我想在这种情况下检查descriptionPub的值,以查看数据是否应该公开。如果是真的我喜欢传递描述...如果错误我想不通过描述。
我试过像
这样的东西 if($data['descriptionPub']){
'description' => $data['description'],
}
我还尝试有条件地设置数据变量,然后将其传递到我的值图中。
if($data['descriptionPub']){
$msg = $data['description'];
}else{
$msg = "";
}
'description' => $msg,
但是在我的索引页面上,我似乎没有在实现其中任何一个时获得任何数据。
我很新,所以我希望有一种简单的方法来实现我不知道的这种行为。
答案 0 :(得分:1)
您可以使用三元运算符来解决此问题:
$valueMap[] = array(
'title' => $data['title'],
'lat' => $data['lat'],
'lng' => $data['lng'],
'description' => $data['descriptionPub'] ? $data['description'] : "",
);
这不会删除描述键,但会将一个空字符串作为值,这对您来说似乎很难理解。
答案 1 :(得分:1)
使用ternary operator(QObject
):
?:
或将逻辑移出数组文字:
while ($data = $results->fetch_assoc()){
$valueMap[] = array(
'title' => $data['title'],
'lat' => $data['lat'],
'lng' => $data['lng'],
'description' => $data['descriptionPub'] ? $data['description'] : '',
'descriptionPub' => $data['descriptionPub']
);
}