为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
MM们 2023-03-26 14:27:00
我有一个使用 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 函数从我的表的内容中自动生成这些字符串?
查看完整描述

1 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

你会做一个像这样的 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";

}


查看完整回答
反对 回复 2023-03-26
  • 1 回答
  • 0 关注
  • 81 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信