1

这是在Laravel遍历集合代码:如何使用自定义键mapWithKeys返回数组?

$usersData = $users->mapWithKeys(function ($item) { 
    return [$item->id => array("name" => $item->name, "email" => $item->email, "id" => $item->id)]; 
}); 

我试图让阵列$usersData定制key和值数组。

但结果我得到这个:

array:1 [ 0 => array:3 [ "name" => "Doctor" "email" => "[email protected]" "id" => 2 ]] 

相反,关键2我有钥匙0数组的元素。

回答

1

我相信你做错了什么。看看这个:

$users = collect([ 
    (object)['id' => 5, 'value' => 30, 'something' => 'else'], 
    (object)['id' => 6, 'value' => 40, 'something' => 'else2'], 
    (object)['id' => 7, 'value' => 50, 'something' => 'else3'], 
    (object)['id' => 8, 'value' => 60, 'something' => 'else4'], 
    (object)['id' => 9, 'value' => 70, 'something' => 'else5'], 
    (object)['id' => 30, 'value' => 90, 'something' => 'else6'], 
]); 

$users = $users->mapWithKeys(function($user, $key) { 
    return [$user->id => $user]; 
}); 

dd($users); 

的这里的结果是:

Collection {#374 
    #items: array:6 [ 
    5 => {#364 
     +"id": 5 
     +"value": 30 
     +"something": "else" 
    } 
    6 => {#363 
     +"id": 6 
     +"value": 40 
     +"something": "else2" 
    } 
    7 => {#362 
     +"id": 7 
     +"value": 50 
     +"something": "else3" 
    } 
    8 => {#361 
     +"id": 8 
     +"value": 60 
     +"something": "else4" 
    } 
    9 => {#356 
     +"id": 9 
     +"value": 70 
     +"something": "else5" 
    } 
    30 => {#357 
     +"id": 30 
     +"value": 90 
     +"something": "else6" 
    } 
    ] 
} 

完全按照预期。您确定不使用例如dd($users->values())显示结果吗?因为values()将删除这些密钥,在这种情况下,您将获得从0到5的索引。

您的情况不起作用,请尝试使用此功能 - 这应该可以工作,并且应该让您知道您做错了什么。

相关问题