寻找某种“前瞻性迭代”用于分组记录集


Looking for some kind of "lookahead iteration" for grouping record sets

就像以前一样,如果您需要在站点上显示某些内容的列表,则必须使用一些循环结构来遍历数据。

在我的例子中是foreach()在表

<tr>
foreach($candidates as $candidate)

之后是values:

$candidate->id

问题是一个特定的值,它是强制的。在我的数据库中,我有如下表所示的数据,例如,对于candidates_id = 600,有执行1和0

id  |  candidates_id  | enforcement 
-------------------------------------
1   |       598       |      2
2   |       599       |      4
3   |       600       |      1
4   |       600       |      0

直到现在一切都很好,我从DB得到值,并在现场回显它。问题是像0或1这样的值对最终用户没有意义。所以我写IF/ELSE condition

if($candidate->enfor == 0)
 echo "TEXT1";
elseif($candidate->enfor == 1)
 echo "TEXT2";
else
 echo "some default text";

在示例数据中,有两条记录,candidates_id=600和不同的执行值。
现在脚本产生两个独立的<tr>元素。一个含有<td>TEXT1</td>,另一个含有<td>TEXT2</td>
我正在寻找一种方法来输出<td>TEXT1,TEXT2</td>在相同的html表行和列的基础上,有这两个记录为candidate_id=600在数据库中。
我试着制作另一个循环,但没有成功。我甚至不确定我的想法是否正确。

谁能告诉我怎么做这件事?

编辑:my Query to DB is:

SELECT c.id, c.firstname, c.surname, c.email, c.process, c.search_work, c.note,c.registration_date,
       MAX(CASE WHEN cl.language = 'angličtina' THEN cl.level ELSE '-' END)AS 'en',
       MAX(CASE WHEN cl.language = 'němčina' THEN cl.level ELSE '-' END)AS 'ge',
       group_concat(DISTINCT ce.enforcement) as enfor,  
       group_concat(DISTINCT cc.city) as city  
FROM candidates AS c
LEFT JOIN candidates_languages AS cl ON c.id = cl.candidates_id
LEFT JOIN candidates_enforcement as ce on c.id = ce.candidates_id
LEFT JOIN candidates_city as cc on c.id = cc.candidates_id
GROUP BY c.id, c.firstname, c.surname, c.email DESC

情况是查询中的group_concat将为id=600返回0,1。你应该这样做:

foreach($candidates as $candidate){
    // do your things ...
    $enfor_array = explode(',', $candidate->enfor);
    foreach($enfor_array as $enf) {
       if($enf == 0)
          echo "TEXT1";
       elseif($enf == 1)
          echo "TEXT2";
       else
          echo "some default text";
    }
}