组合多个数组,但当一个数组为空时,在php中不显示任何内容
我需要关于组合数据库中的多个数组并使用获取的帮助组合多个数组,但当一个数组为空时,在php中不显示任何内容,php,arrays,fetchall,Php,Arrays,Fetchall,我需要关于组合数据库中的多个数组并使用获取的帮助 fetchAll(PDO::FETCH_ASSOC) 首先,我查找百分比为90%的数据成员,并在查询“SELECT”中的减一列中搜索数据库中的每个数据,例如: $query1 = "SELECT * FROM tb_member WHERE category = '1' AND gender = 'M' AND age = '30'"; $stmt1 = $this->db->prepare($query1); $stmt1->
fetchAll(PDO::FETCH_ASSOC)
首先,我查找百分比为90%的数据成员,并在查询“SELECT”中的减一列中搜索数据库中的每个数据,例如:
$query1 = "SELECT * FROM tb_member WHERE category = '1' AND gender = 'M' AND age = '30'";
$stmt1 = $this->db->prepare($query1);
$stmt1->execute();
$data1 = $stmt1->fetchAll(PDO::FETCH_ASSOC);
$query2 = "SELECT * FROM tb_member WHERE category = '1' AND age = '30'";
$stmt2 = $this->db->prepare($query2);
$stmt2->execute();
$data2 = $stmt2->fetchAll(PDO::FETCH_ASSOC);
$query3 = "SELECT * FROM tb_member WHERE category = '1' AND gender = 'M'";
$stmt3 = $this->db->prepare($query3);
$stmt3->execute();
$data3 = $stmt3->fetchAll(PDO::FETCH_ASSOC);
我将数组与这样的示例代码结合起来
$data = $data1 + $data2 + $data3;
if(empty($data1)){
$data = $data2 + $data3;
}
elseif(empty($data2)){
$data = $data1 + $data3;
}
elseif(empty($data3)){
$data = $data1 + $data2;
}
else{
$data = $data1 + $data2 + $data3;
}
if(empty($array)){
$array = array();
}
$data = array_merge($data1, $data2, $data3);
我已经尝试并成功了,但当其中一个数组为空或未读时,它将出错或不显示任何数据,甚至通知错误
我试着把“如果还有别的”写成这样
$data = $data1 + $data2 + $data3;
if(empty($data1)){
$data = $data2 + $data3;
}
elseif(empty($data2)){
$data = $data1 + $data3;
}
elseif(empty($data3)){
$data = $data1 + $data2;
}
else{
$data = $data1 + $data2 + $data3;
}
if(empty($array)){
$array = array();
}
$data = array_merge($data1, $data2, $data3);
并且页面不显示任何内容或空白,是否有其他解决方案
更新
毕竟,我使用array\u merge()
组合@Saral中的多个数组,当某个变量为空时,我使用如下代码示例
$data = $data1 + $data2 + $data3;
if(empty($data1)){
$data = $data2 + $data3;
}
elseif(empty($data2)){
$data = $data1 + $data3;
}
elseif(empty($data3)){
$data = $data1 + $data2;
}
else{
$data = $data1 + $data2 + $data3;
}
if(empty($array)){
$array = array();
}
$data = array_merge($data1, $data2, $data3);
然后就开始工作了,谢谢。您可以这样组合阵列
$data = $data1 + $data2 + $data3;
if(empty($data1)){
$data = $data2 + $data3;
}
elseif(empty($data2)){
$data = $data1 + $data3;
}
elseif(empty($data3)){
$data = $data1 + $data2;
}
else{
$data = $data1 + $data2 + $data3;
}
if(empty($array)){
$array = array();
}
$data = array_merge($data1, $data2, $data3);
比如说,
$array1 = [];
$array2 = ['a', 'b'];
$array3 = ['l', 'k', 'm'];
$array4 = [];
$array = array_merge($array1, $array2, $array3, $array4);
print_r($array);
Output:
Array ( [0] => a [1] => b [2] => l [3] => k [4] => m )
奇怪的是,
$array=$array1+$array2+$array3+$array4
给了我数组([0]=>a[1]=>b[2]=>m)
这样组合数组的最佳方法:
$data=compact($data1,$data2,$data3);
或
谢谢你回答我的问题,我尝试了,但我不知道$data2发生了什么,我尝试使用var_dump和result NULL,我认为$data2的结果不是数组,你能解释一下吗?@IvanJuliant PDOStatement::fetchAll如果要获取的结果为零,则返回空数组;如果失败,则返回false:如果结果为零,我该怎么知道??