寻找某种 "lookahead iteration" 来对记录集进行分组

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

与过去一样,如果您需要在网站上显示某些内容的列表,您必须使用一些循环结构来迭代数据。

在我的例子中,它是 table

<tr> 上的 foreach()
foreach($candidates as $candidate)

然后我得到值:

$candidate->id

问题是一个具体的值,就是执行。在我的数据库中,我有如下 table 中的数据,因此例如 candidates_id = 600 有 enforcemement 1 和 0

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

到目前为止一切正常,我从数据库中获取值并在现场回显。问题是像 0 或 1 这样的值对最终用户没有意义。所以我写 IF / ELSE 条件

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>.
我正在寻找一种在相同的 html table 行和列中输出 <td>TEXT1,TEXT2</td> 的方法,因为 candidate_id=600 在数据库。
我尝试为此再做一个循环,但没有成功。 我什至不确定我的想法是否正确。

有人可以告诉我如何进行这项工作吗?

编辑: 我对数据库的查询是:

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 将 return 0,1 用于 id=600。你应该这样做:

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";
    }
}