如何在foreach循环中将mySQL数据库中的类似结果分组?

pea*_*ove 0 php mysql pdo loops

$pdo = $db->prepare('SELECT * FROM animals WHERE id = :id ');  
$pdo->execute(array('id' => $id));
while ($row = $pdo->fetch(PDO::FETCH_ASSOC)) {
     $name = $row["name"];
     echo $name."<br>";
}
Run Code Online (Sandbox Code Playgroud)

我的循环结果现在是 -

cat
cat
cat
cat
dog
bird
Run Code Online (Sandbox Code Playgroud)

我希望将结果分组,如果它们相似,那么我得到的结果是这样的 -

cat
dog
bird
Run Code Online (Sandbox Code Playgroud)

Ana*_*Die 5

不同的方法:-

1. DISTINCT: -

$pdo = $db->prepare('SELECT DISTINCT name FROM animals WHERE id = :id ');
Run Code Online (Sandbox Code Playgroud)

2. GROUP BY: -

$pdo = $db->prepare('SELECT name FROM animals WHERE id = :id  GROUP BY name');
Run Code Online (Sandbox Code Playgroud)