当它们具有相同的值时如何将结果连接成一个字符串

我有一个使用 PHP 访问的数据库表。该表包含三列:id, name, group。下面是表格内容的示例:


------------------------------------------------------

| id   | name   | group                              |

------------------------------------------------------

| 1    | Lucy   | 1                                  |

| 2    | Jane   | 1                                  |

| 3    | Emily  | 2                                  |

| 4    | Anne   | 1                                  |

| 5    | Kim    | 3                                  |

| 6    | Carrie | 3                                  |

------------------------------------------------------

我像这样在 PHP 中访问我的表:


SELECT * FROM table

我想生成以下字符串,每组一个字符串:


Lucy、Jane 和 Anne 是第 1 组(Lucy 的 id 是 1,Jane 的 id 是 2,Anne 的 id 是 4)。


Emily 是第 2 组(Emily 的 ID 是 3)。


Kim 和 Carrie 是第 3 组(Kim 的 ID 是 5,Carrie 的 ID 是 6)。


我可以使用什么 PHP 函数从我的表的内容中自动生成这些字符串?


MM们
浏览 82回答 1
1回答

阿晨1998

你会做一个像这样的 SQL 查询:SELECT * FROM table在 php 端你会做一些类似的事情:$groups = [];foreach($data as $row) {   if(!isset($groups[$row['group']]))      $groups[$row['group']] = [];   $groups[$row['group']][] = $row;}foreach($groups as $groupId => $users) {    $out = "(".implode(", ", array_map(function($user) {        return $user['name']."'s id is ".$user['id'];    }, $users)).")";    if(count($users) === 1)        $out = $users[0]['name']." is group ".$groupId." ".$out.".";    else {        $lastUser = array_pop($users);        $out = implode(", ", array_map(function($user) { return $user['name']; }, $users))." and ".$lastUser['name']." are group ".$groupId." ".$out.".";    }    echo $out."\n";}
打开App,查看更多内容
随时随地看视频慕课网APP