我有简单的对象数组:
"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..
}
有什么想法吗?
答案 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中有一个关于此功能的错误,它会挖掘两个层次而不是一个层次:/