What’s the easiest way to turn the array
JavaScript
x
[
0 => "3.1"
1 => "2.1"
]
into
JavaScript
[
['tag_id' => 3, 'contact_id' => 1],
['tag_id' => 2, 'contact_id' => 1]
]
Is there something built-in with laravel/collections that I can use?
I know I can make a foreach loop and use explode and populate a new array, but I’m wondering if there is a built-in function in PHP or a laravel collections method I can use.
Advertisement
Answer
I think you’re looking for combine
(or the PHP equivalent array_combine
)
JavaScript
$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));
});