如何获取 Laravel 集合中元素的索引

Posted

技术标签:

【中文标题】如何获取 Laravel 集合中元素的索引【英文标题】:How to get index of element in Laravel collection 【发布时间】:2019-05-08 18:34:00 【问题描述】:

如何检索集合中元素的索引? 我的代码:

$users = User::has('posts')->withCount('posts')->orderBy('posts_count')->take(50)->get();

if($users->contains(Auth::id()))
    //get the index of auth user id
 

谢谢你的帮助

【问题讨论】:

【参考方案1】:

可以使用集合search()方法:https://laravel.com/docs/5.7/collections#method-search

$users = User::has('posts')->withCount('posts')->orderBy('posts_count')->take(50)->get();

$userIndex = $users->search(function($user) 
    return $user->id === Auth::id();
);

请小心,因为索引可能为 0:

// DON'T do this
if($userIndex) 
    // this will get skipped if the user is the first one in the collection


// Do this instead
if($userIndex !== false) 
    // this will work

【讨论】:

【参考方案2】:
$users = User::has('posts')->withCount('posts')->orderBy('posts_count')->take(50)->get();

// this return a collection. So can do an if like this: $userIndex->count() > 0
$userIndex = $users->filter(function($user) 
    return $user->id === Auth::id()
);

【讨论】:

以上是关于如何获取 Laravel 集合中元素的索引的主要内容,如果未能解决你的问题,请参考以下文章

获取 PL/SQL 集合中特定元素的键或索引?

如何在迭代期间注释 Laravel 集合元素

如何使用 Jenssegers Mongodb 获取索引

通过索引 Laravel 5 从集合中获取项目

如何获取 Laravel 集合中的下一个项目?

如何从 laravel 的 eloquent 集合中获取外键