0

我有 2 个结果集

$result_a = @pg_query($rquery_a);
$result_b = @pg_query($rquery_b);

我有 2 个数组来托管和显示 html 页面上的数据:

$datas_a = array();
$datas_b = array();

$datas_a 获取此数据:

$i=0;
while ($row = @pg_fetch_assoc($result_a)){
    $datas_a[$i] = array('s1' => $row['salle'],
                        'duree_occu' => $row['duree_resa']);
    $i++;
    }

和 $datas_b 得到这个数据:

$i=0;
while ($row = @pg_fetch_assoc($result_b)){
    $datas_b[$i] = array('s1' => $row['salle'],
                        'duree_cours' => $row['duree_cours']);
    $i++;
    }

从这两个具有相同行数和相同键的现有数组中,我想要 3 列,两个数组($datas_a 和 $datas_b)的 1 列相同,第二列来自 $datas_a,第三列来自 $数据_b

$datas_a 目前看起来像这样

$datas_a

$datas_b 目前看起来像这样

$datas_b

它应该看起来像这样

合并列

现在,我已经使用

$dataComb = array_merge($datas_a, $datas_b);

但它将一个数组放在另一个数组之上,而我只想添加一列

4

1 回答 1

0

尝试

$i=0;
foreach ($datas_a as $data) {
    $dataComb[$i]["s1"] = $data["s1"];
    $dataComb[$i]["duree_resa"] = $data["duree_resa"];
    $i++;
}

$i=0;
foreach ($datas_b as $data) {
    $dataComb[$i]["duree_cours"] = $data["duree_cours"];
    $i++;
}

编辑 - 2021-08-20

或者对于更强大的东西,因为这是我只知道这样做的基本方式

$datas_a = array(); // associative array
$datas_b = array();
$dataComb = []; // indexed array

$i=0;
while ($row = @pg_fetch_assoc($result_a)){
    $datas_a[$i] = array('s1' => $row['salle'],
                        'duree_resa' => $row['duree_resa']);
    $i++;
    }

$i=0;
while ($row = @pg_fetch_assoc($result_b)){
    $datas_b[$i] = array('s1' => $row['salle'],
                        'duree_cours' => $row['duree_cours']);
    $i++;
    }

$i=0;
if($a>=$b){
    foreach($datas_a as $dataa) {
        $dataTmp[$i][0] = $dataa["s1"];
        $dataTmp[$i][1] = $dataa["duree_resa"];
        foreach($datas_b as $datab) {
            if($dataa["s1"] == $datab["s1"] ){
                $dataTmp[$i][2] = $datab["duree_cours"];
            }
        }
        $i++;
    }
}
elseif($a<$b){
        foreach($datas_b as $datab) {
            $dataTmp[$i][0] = $datab["s1"];
            $dataTmp[$i][1] = $datab["duree_resa"];
            foreach($datas_a as $dataa) {
                if($datab["s1"] == $dataa["s1"] ){
                    $dataTmp[$i][2] = $dataa["duree_cours"];
                }
            }
            $i++;
        }
}

$nb_lig = $a>=$b ? $a : $b;

for ($row=0; $row<=$nb_lig; $row++) {
    $dataComb[$row]["s1"] = $dataTmp[$row][0];
    $dataComb[$row]["duree_resa"] = $dataTmp[$row][1];
    $dataComb[$row]["duree_cours"] = $dataTmp[$row][2];
}

并且有 $dataComb 作为关联数组,它将先前数组中的数据与匹配的记录结合起来

foreach ($dataComb as $data){
    echo '<tr>';
    echo '<td>'.$data["s1"].'</td>';
    echo '<td>'.$data["duree_resa"].'</td>';
    echo '<td>'.$data["duree_cours"].'</td>';
    echo '</tr>';
}
于 2021-08-19T14:59:56.110 回答