<?phpclass Test extends SQLite3{ public function __construct($file) { parent::__construct($file); $this->createAggregate('groupConcat', [$this, 'concatStep'], [$this, 'concatFinal']); } public function concatStep(&$context, $rowId, $string, $delimiter) { if (!isset($context)) { $context = [ 'delimiter' => $delimiter, 'data' => [] ]; } $context['data'][] = $string; return $context; } public function concatFinal(&$context) { return implode($context['delimiter'], $context['data']); }}$SQLite = new Test('/tmp/test.sqlite');$SQLite->exec("create table `test` (`id` TEXT, `color` TEXT, `size` TEXT)");$SQLite->exec("insert into `test` (`id`, `color`, `size`) values ('1', 'red', 'M')");$SQLite->exec("insert into `test` (`id`, `color`, `size`) values ('1', 'green', 'M')");$SQLite->exec("insert into `test` (`id`, `color`, `size`) values ('1', 'blue', 'S')");$Result = $SQLite->query("select `size`, groupConcat(`color`, ';') as `color` from `test` group by `size`");while ($row = $Result->fetchArray(SQLITE3_ASSOC)) { print_r($row);}