Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使关联数组成为一个类似于雄辩查询集合的集合_Php_Arrays_Laravel_Collections - Fatal编程技术网

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' => [

我有一个接收API数据的类,我想将所有响应封装到一个集合类中。因此,我从API调用接收数据,将其转换为普通的关联php数组,并使用
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
对象表示,而不是数组。这将允许您参考您想要的数据。