我有下一个阵列
[
['id' => 30, 'count' => 3],
['id' => 45, 'count' => 7]
]
Run Code Online (Sandbox Code Playgroud)
我需要它
[
30 => ['count' => 3],
45 => ['count' => 7]
]
Run Code Online (Sandbox Code Playgroud)
我做了什么
$formatted = [];
foreach ($services as $service) {
$formatted[$service['id']] = [
'count' => $service['count']
];
}
Run Code Online (Sandbox Code Playgroud)
我想要的是没有临时$格式变量的更优雅的解决方案.谢谢!
更新.非常感谢@rtrigoso!使用laravel集合,我的代码看起来是下一个
$services->reduce(function ($carry, $item) {
$carry[$item['id']] = ['count' => $item['count']];
return $carry;
});
Run Code Online (Sandbox Code Playgroud)
您可以在一行中执行以下操作array_column:
$array = array_column($array, null, 'id');
Run Code Online (Sandbox Code Playgroud)
您想要的输出之间的一个区别是,它仍然包含id数组第二级中的键,如下所示:
[
30 => ['id' => 30, 'count' => 3],
45 => ['id' => 45, 'count' => 7],
]
Run Code Online (Sandbox Code Playgroud)
但希望不会引起任何问题.如果你确实需要删除它,你可以使用以下方法:
$array = array_map(function ($e) {
unset($e['id']);
return $e;
}, $array);
Run Code Online (Sandbox Code Playgroud)
这种方法可能是最好的,如果您的行将来可能会有更多的键,即列出要删除的键而不是要保留的键更快.如果没有,并且你只有一个计数,那么说实话,你原来的例子可能是你得到的最好的.