php - 如何从 foreach 中获取唯一值

标签 php laravel laravel-5.4

我正在尝试在下拉列表中获取唯一值。下拉代码是:

@foreach($admin_bills as $admin_bill)
   <?php $month = date('M, Y', strtotime($admin_bill->created_at)); ?>
   <option value="{{ $admin_bill->id }}">{{ $month }}</option>
@endforeach

这为我提供了基于 created_at 的所有值。例如,如果同一个月有多个条目,它会给出类似的结果

Aug, 2017
Aug, 2017
Aug, 2017
Sep, 2017
Sep, 2017

但是,如果同一个月有多个条目,我希望它们在下拉列表中显示一次。所以结果会是这样的:

Aug, 2017
Sep, 2017

我不能简单地使用像 array_unique() 这样的函数,并且 $admin_bill->id 应该获得唯一 $month 的第一个 id 。我怎样才能做到这一点?请帮忙。我使用的是 Laravel 5.4

谢谢。

最佳答案

建议您在 Controller 中解决此问题。不在 View 中。在 Controller 中,您可以编写如下内容:

$admin_bills->pluck('created_at')->map->format('M, Y')->distinct();

我没有对此进行测试,但我认为它会让您朝着正确的方向前进。

我假设 created_at 属性会自动解析为碳对象。因为这就是 Laravel 通常的工作方式。

关于php - 如何从 foreach 中获取唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46191819/

相关文章:

php - Laravel seeder:调用未定义的方法 Illuminate\Notifications\Notification::getConnectionName()

email - 在 Laravel 中发送邮件时缺少 Illuminate\Support\Manager::createDriver() 的参数 1

laravel - 在 Laravel 数组名称中验证

php - Laravel 验证 - 日期格式 m/y 不接受特定值

php - 如何从 mysql 查询中回显结果行的各个列值?

php - 带有 COUNT 别名的 MySQL UNION

php - 当一个表中的数据库中不存在行时,如何插入记录

php - 复选框重复

php - Laravel 在用户模型中通过 id 获取用户并将它们存储在数组中

laravel - 如何在 Laravel + Vue 中隐藏空查询的结果?