首页 > 解决方案 > 如何从foreach中排除相同的元素?

问题描述

请告诉我,如何从 foreach 中排除相同的元素?

代码:

$sql = 'SELECT * FROM users, posts 
    WHERE posts.author_id = users.id';
$rows = R::getAll($sql);
$data = R::convertToBeans('posts',$rows);

foreach ($data as $element) {
    echo $element->login . '<br/>' . $element->name . '<br/><br/>';
}

结果:

mail_1@test.com

帖子1

mail_1@test.com

邮政2

mail_2@test.com

Post3

mail_3@test.com

Post5

mail_2@test.com

邮政4

如所须:

mail_1@test.com

帖子1

邮政2

mail_2@test.com

Post3

邮政4

mail_3@test.com

Post5

标签: phpforeach

解决方案


您可以先将数组的内容分组,login并通过分组数组循环显示:

$groupedData = [];

foreach ($data as $element) {
    $groupedData[$element->login][] = $element->name;
}

foreach ($groupedData as $login => $names) {
    echo $login . '<br/>' . join('<br/>', $names) . '<br/><br/>';
}

好的是如果需要,您实际上可以在其他地方使用 groupedData 数组。


推荐阅读