Php 使关联数组成为一个类似于雄辩查询集合的集合
我有一个接收API数据的类,我想将所有响应封装到一个集合类中。因此,我从API调用接收数据,将其转换为普通的关联php数组,并使用Php 使关联数组成为一个类似于雄辩查询集合的集合,php,arrays,laravel,collections,Php,Arrays,Laravel,Collections,我有一个接收API数据的类,我想将所有响应封装到一个集合类中。因此,我从API调用接收数据,将其转换为普通的关联php数组,并使用collect()helper包装它 我有点期待它能像Eloquent一样工作,您可以引用一个键作为集合属性,但它不能 以下是我将收到的响应数据示例: $data = [ 'status' => 'SUCCESS', 'message' => 'Your request was received.', 'data' => [
collect()
helper包装它
我有点期待它能像Eloquent一样工作,您可以引用一个键作为集合属性,但它不能
以下是我将收到的响应数据示例:
$data = [
'status' => 'SUCCESS',
'message' => 'Your request was received.',
'data' => [
'first_name' => 'John',
'last_name' => 'Doe',
'address' => [
'street' => '123 Main St.',
'city' => 'Any City',
'state' => 'TX',
'zip' => '12345',
'country' => 'USA'
],
'email' => 'john@doe.com',
'phone' => '(123) 456-7890',
'role' => 'Administrator',
'active_orders' => 3
]
];
$response = collect($data);
我希望能够将此数据包装在一个集合中,并像这样使用它:
$response->data->address->street
或$response->data->first\u name
但是,我得到一个错误,该错误表示属性[data]在此集合实例上不存在。
如果要访问它,我必须像数组一样引用它。例如,$response['data']['first\u name']
。如果我想使用这种语法,我会把它作为一个数组
如何递归地将集合属性设置为数组键名称,以便像使用雄辩的查询一样使用它
如何递归地将集合属性设置为数组键名称,以便像使用雄辩的查询一样使用它
json\u decode()
通常解构成这样一个对象。但您需要从JSON开始。因此,这看起来很愚蠢,而且可能效率不高,但这应该可以满足您的要求:
$response = json_decode(json_encode($data));
这是一种将数组转换为对象的有效方法,但我想特别利用Laravel的集合类方法。我认为您正在混合
集合
和模型
在@mark之前,如果不使用->first()
,您就不能使用->property
?如果您是json\u解码
HTTP请求的结果,您可以让json\u解码
返回一个StdClass
对象表示,而不是数组。这将允许您参考您想要的数据。