Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
组合多个数组,但当一个数组为空时,在php中不显示任何内容_Php_Arrays_Fetchall - Fatal编程技术网

组合多个数组,但当一个数组为空时,在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:如果结果为零,我该怎么知道??