[英]PHP/Laravel - Create an array of objects from two simple arrays or an associative array that combines that two
我正在寻找一种将php关联数组转换为对象数组并键入每个关联的方法。 我也可以将其视为两个单独的简单数组,一个带有名称,一个带有类。 这是一个关联的示例...
array:2 [
"someName" => "someClass"
"someOtherName" => "someOtherClass"
]
要么
names => [0 => 'name1', 1 => 'name2']
classes => [0 => 'class1', 1 => 'class2']
...无论哪种方式,我都在寻找这样的最终结果:
[
{ 'name': 'someName', 'class': 'someClass' },
{ 'name': 'someOtherName', 'class': 'someOtherClass' }
]
最聪明的方法是什么?
我认为最好的方法是将zip方法与transform或map相结合:
$names = [0 => 'name1', 1 => 'name2'];
$classes = [0 => 'class1', 1 => 'class2'];
$merged = collect($names)->zip($classes)->transform(function ($values) {
return [
'name' => $values[0],
'class' => $values[1],
];
});
dd($merged->all());
结果,您得到数组:
array:2 [▼
0 => array:2 [▼
"name" => "name1"
"class" => "class1"
]
1 => array:2 [▼
"name" => "name2"
"class" => "class2"
]
]
因此,如果您需要json,则可以只使用json_encode($merged)
此输出在您的第一个块上是相同的。
$array = ['someName' => 'someClass', 'someOtherName' => 'someOtherClass'];
您还可以使用laravel集合,为处理数据数组提供一个流畅,方便的包装器。 例如,查看以下代码。
$collection = collect([
'names' => [
['0' => 'name1', '1' => 'name2'],
],
'classes' => [
['0' => 'class1', '2' => 'class2']
],
]);
还有一种您想要的方法合并, combine
方法将集合的值(作为键)与另一个数组或集合的值合并:在https://laravel.com/docs/5.7/collections中了解更多信息
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.