作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个正在接收 API 数据的类,我想将所有响应包装到一个集合类中。因此,我从 API 调用接收数据,将其转换为普通的关联 php 数组,并使用 collect()
帮助程序将其包装。
我有一半希望它能像 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_name
但是,我收到一条错误消息,提示 Property [data] 在此集合实例上不存在。
如果我想访问它,我必须像引用数组一样引用它。例如。 $response['data']['first_name']
。如果我想使用该语法,我会将其保存为一个数组。
我如何递归地将我的集合属性设置为数组键名称,以便我可以像使用 Eloquent 查询一样使用它?
最佳答案
How can I recursively set my collection properties as the array key names so I can use it much like I would an Eloquent query?
json_decode()
通常解构为这样一个对象。但是你需要从 JSON 开始。所以,这看起来很愚蠢,而且效率可能不是很高,但这应该可以满足您的需求:
$response = json_decode(json_encode($data));
关于php - 将关联数组做成类似于 Eloquent 查询集合的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46221804/
我是一名优秀的程序员,十分优秀!