PHP/Laravel - 从两个简单数组或组合这两个数组的关联数组创建对象数组

Mat*_*son 2 php arrays object laravel laravel-5

我正在寻找一种将 php 关联数组转换为对象数组并为每个关联键控的方法。我还可以将其视为两个单独的简单数组,一个包含名称,另一个包含类。这是一个关联示例...

array:2 [
  "someName" => "someClass"
  "someOtherName" => "someOtherClass"
]
Run Code Online (Sandbox Code Playgroud)

或者

names => [0 => 'name1', 1 => 'name2']
classes => [0 => 'class1', 1 => 'class2']
Run Code Online (Sandbox Code Playgroud)

...无论哪种方式,我都在寻找这样的最终结果:

[
    { 'name': 'someName', 'class': 'someClass' },
    { 'name': 'someOtherName', 'class': 'someOtherClass' }
]
Run Code Online (Sandbox Code Playgroud)

做到这一点最明智的方法是什么?

Mar*_*łek 7

我认为最好的方法是将zip方法与TransformMap结合起来:

\n\n
$names = [0 => \'name1\', 1 => \'name2\'];\n$classes = [0 => \'class1\', 1 => \'class2\'];\n\n$merged = collect($names)->zip($classes)->transform(function ($values) {\n    return [\n        \'name\' => $values[0],\n        \'class\' => $values[1],\n    ];\n});\n\ndd($merged->all());\n
Run Code Online (Sandbox Code Playgroud)\n\n

结果你得到数组:

\n\n
array:2 [\xe2\x96\xbc\n  0 => array:2 [\xe2\x96\xbc\n    "name" => "name1"\n    "class" => "class1"\n  ]\n  1 => array:2 [\xe2\x96\xbc\n    "name" => "name2"\n    "class" => "class2"\n  ]\n]\n
Run Code Online (Sandbox Code Playgroud)\n\n

所以如果你需要json,你可以使用json_encode($merged)

\n