首页 > 解决方案 > 在数组上使用爆炸?

问题描述

什么是最简单的方法来转动阵列

[
    0 => "3.1"
    1 => "2.1"
]

进入

[
    ['tag_id' => 3, 'contact_id' => 1],
    ['tag_id' => 2, 'contact_id' => 1]
]

我可以使用 laravel/collections 内置的东西吗?

我知道我可以创建一个 foreach 循环并使用 explode 并填充一个新数组,但我想知道 PHP 中是否有内置函数或我可以使用的 laravel 集合方法。

标签: phplaraveleloquent

解决方案


我认为您正在寻找combine(或 PHP 等价物array_combine

$keys = collect([ 'tag_id', 'contact_id' ]); 
$result = collect([
    "3.1",
    "2.1"
])->filter(function ($str) { return Str::contains($str, '.'); })
->map(function ($str) use ($keys) {
   return $keys->combine(collect(explode('.', $str))->take(2));
});


推荐阅读