1

我将从数组开始,以使图片清晰。我从我的数据库中获取了两个数组。

这是数组 1 中的一条记录

Array ( [0] => Array ( [vraag_id] => 2 [vraag_titel] => Je bent geen randdebiel he [categorie_id] => 1 [categorie_naam] => Eierstokkanker / Ovarium [gebruiker] => Bas Koesveld [reacties] => 13 [vraag_inhoud] => Omdat ik het zeg verdomme! [vraag_datum] => 2012-11-19 00:00:00 ) )

这是来自 Array 2 的部分完整记录

Array ( [0] => Array ( [vraag_id] => 1 [resultaat] => 2 ) [1] => Array ( [vraag_id] => 2 [resultaat] => 1 ) [2] => Array ( [vraag_id] => 3 [resultaat] => 1 ) [3] => Array ( [vraag_id] => 4 [resultaat] => 1 ) [4] => Array ( [vraag_id] => 5 [resultaat] => 1 ) [5] => Array ( [vraag_id] => 6 [resultaat] => 1 ) [6] => Array ( [vraag_id] => 7 [resultaat] => 1 ) [7] => Array ( [vraag_id] => 8 [resultaat] => 1 ) [8] => Array ( [vraag_id] => 9 [resultaat] => 1 ) [9] => Array ( [vraag_id] => 10 [resultaat] => 1 ) [10] => Array ( [vraag_id] => 11 [resultaat] => 1 ) [11] => Array ( [vraag_id] => 12 [resultaat] => 1 ) )

我想将数组 2 中的列 resultaat 添加到 vraag_id 匹配的数组 1 的记录中。

我对 PHP 很陌生,并且尝试了很多,但没有成功。有谁能帮助我吗?

编辑:

感谢大家的评论!我想我觉得我应该让自己更清楚一点。两个内容都来自同一个表,但查询不同。查询是:

SELECT T.id AS vraag_id, T.titel AS vraag_titel, C.id AS categorie_id, C.naam AS categorie_naam, L.gebruikersnaam AS gebruiker, P.inhoud AS vraag_inhoud, P.datum AS vraag_datum 
FROM categorie C
JOIN topic T ON C.id = T.categorie
JOIN post P ON T.id = P.vraag
JOIN lid L ON P.lid = L.id 
WHERE P.lid = 2 
ORDER BY P.datum DESC

这为我提供了数据库所需的结果。现在我想计算一个问题有多少回复,我用这个查询来做到这一点:

SELECT vraag AS vraag_id, COUNT( * )
FROM post
WHERE lid = 2
GROUP BY vraag_id

现在我如何加入这些查询?

非常感谢!

4

2 回答 2

1

您可以做的最好的事情是将查询中的结果加入数据库。

说,你的问题很容易解决:

// rework your array2:
$temp = array();
foreach ($array2 as $index) {
    $temp[$index['vraag_id']]=$index['resultaat'];
}

// then add the resultaat to the right record:

for($i=0; $i< count($array1); $i++) {
    $array1[$i]['resultaat'] = $temp[$array1[$i]['vraag_id']];
}

顺便说一句,我建议另一次使用 sql join 以更有效和优雅的方式获取结果。

您是否尝试过像这样组合这两个查询?

SELECT T.id AS vraag_id, T.titel AS vraag_titel, C.id AS categorie_id, C.naam AS 
       categorie_naam, L.gebruikersnaam AS gebruiker, P.inhoud AS vraag_inhoud, 
       P.datum AS vraag_datum, res.resultaat 
FROM categorie C
JOIN topic T ON C.id = T.categorie
JOIN post P ON T.id = P.vraag
JOIN lid L ON P.lid = L.id 
JOIN (SELECT vraag AS vraag_id, COUNT( * ) as resultaat
    FROM post
    WHERE lid = 2
    GROUP BY vraag_id) as res ON T.id = res.id
WHERE P.lid = 2 
ORDER BY P.datum DESC

我现在手头没有 mysql,也无法自己测试,但不包括拼写错误,它应该可以工作)。

诀窍是在同一个表上使用子查询并即时加入它

于 2012-11-22T16:36:58.733 回答
0

假设第一个数组中的每个 vraag_id 在第二个数组中只有一个条目,那么大致(也是最简单的):

<?php

foreach ($array2 as $a2i)
{
    foreach ($array1 as $a1i)
    {
        if ($a2i['vraag_id'] == $a1i['vraag_id'])
        {
            $a1i['result'] = $a2i['resultaat'];
        }
    }
}

允许每个 vraag_id 有多个结果需要进行微不足道的更改。

或者,使用(可能)LEFT JOIN 在数据库级别执行此操作。

于 2012-11-22T16:27:18.740 回答