Laravel如何返回对象数组

时间:2018-08-07 08:36:39

标签: php laravel

我有简单的对象数组:

"myObject" => [
   'key1' => ["property1" => 'value1', "property2" => 'value2'],
   'key2' => ["property1" => 'value1', "property2" => 'value2'],
   ...
],

当我通过laravel点语法返回此代码时:

return [
   'listOfObjects' => trans(objects)
]

我有:

myObject: {
   key1: {property1:'value1', property2:'value2'},
   key2: {property1:'value1', property2:'value2'},
etc..
}

很简单。

现在我该如何修改我的返回值以仅获取没有数字的对象数组:

myObject: {
   {property1:'value1', property2:'value2'},
   {property1:'value1', property2:'value2'},
etc..
}

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

[编辑] 我想我现在明白了你想要什么。您在PHP中所谓的数组不一定是JSON中的数组。对于JSON,您的“ myObject”是一个对象。 为了使JSON能够将某物识别为数组,只能将数字作为键。

因此将键从“ key1”,“ key2”,...更改为0、1,...

$result = [];
foreach($myObject as $element){
  $result[] = $element;
}
return $result;

之后,$ result看起来像这样

$result = [
  0 => ["prop1" => "val1", "prop2" => "val2"],
  1 => ["prop1" => "val1", "prop2" => "val2"]
]

或简而言之

$result = [
  ["prop1" => "val1", "prop2" => "val2"],
  ["prop1" => "val1", "prop2" => "val2"]
]

现在,当Laravel将$ result转换为JSON或您自己创建时,JSON应该将其识别为数组而不是对象:return response()->json($result);

[上一个:] 您不能返回没有值但没有键的对象。 键的最简单形式是数字,这是数组使用的数字。

答案 1 :(得分:0)

我认为不可能用PHP解决。正如manual

中所说
  

“ ...索引的类型可以是字符串或整数。省略索引时,   整数索引自动生成,从0 ...开始。“

此外,您的要求似乎毫无意义。如果您可以描述自己要实现的目标,那么人们可能会更好地帮助您。

答案 2 :(得分:0)

在这种情况下使用的功能是:

$tryit = trans('objects');
$new = collect($tryit)->flatten(1);
$new->values()->all();

不幸的是,Laravel 5.6中有一个关于此功能的错误,它会挖掘两个层次而不是一个层次:/