【发布时间】:2018-10-10 18:49:18
【问题描述】:
我有一个来自 api 的响应,它返回如下内容:
array:162 [▼
"WAN" => array:4 [▼
"available" => "1153.65000000"
"onOrder" => "0.00000000"
"btcValue" => "1.05385928"
"btcTotal" => "1.05385928"
]
"ONT" => array:4 [▼
"available" => "961.95000000"
"onOrder" => "0.00000000"
"btcValue" => "0.83237534"
"btcTotal" => "0.83237534"
]
"NCASH" => array:4 [▼
"available" => "114194.00000000"
"onOrder" => "0.00000000"
"btcValue" => "0.59495074"
"btcTotal" => "0.59495074"
]
....
这一切都很好而且很花哨,但是我更喜欢使用收集方法。
我已经尝试使用 collect() 方法转换为集合。
$collection = collect($returned, true);
但是我仍然无法像这样遍历数据:
$collection->WAN->available
相反,我在 $results 中得到以下信息:
Collection {#408 ▼
#items: array:162 [▼
"WAN" => array:4 [▼
"available" => "1153.65000000"
"onOrder" => "0.00000000"
"btcValue" => "1.05085979"
"btcTotal" => "1.05085979"
]
"ONT" => array:4 [▼
"available" => "961.95000000"
"onOrder" => "0.00000000"
"btcValue" => "0.83170197"
"btcTotal" => "0.83170197"
]
"NCASH" => array:4 [▼
"available" => "114194.00000000"
"onOrder" => "0.00000000"
"btcValue" => "0.59951850"
"btcTotal" => "0.59951850"
]
....
所以经过大量的嘲笑后,我发现了这个:
$results = json_encode($returned);
$results = json_decode($results);
$collection = collect($results, true);
事实证明这是朝着正确方向迈出的一步,但我仍然无法以完整的集合样式遍历数据。
我现在收到以下回复:
Collection {#572 ▼
#items: array:162 [▼
"WAN" => {#409 ▼
+"available": "1153.65000000"
+"onOrder": "0.00000000"
+"btcValue": "1.05270563"
+"btcTotal": "1.05270563"
}
"ONT" => {#411 ▼
+"available": "961.95000000"
+"onOrder": "0.00000000"
+"btcValue": "0.81842706"
+"btcTotal": "0.81842706"
}
"NCASH" => {#412 ▼
+"available": "114194.00000000"
+"onOrder": "0.00000000"
+"btcValue": "0.60294432"
+"btcTotal": "0.60294432"
}
我可以这样遍历:
$collection['WAN']->available
我怎样才能做到:
$collection->WAN->available
我现在已经没有想法了,我似乎找不到任何可以解决这个问题的方法。
有什么想法吗?
提前致谢。
【问题讨论】:
-
它必须是 Laravel 集合吗?我不认为你可以这样做
$collection->property,但是,如果你想拥有它,你可以将它完全转换为StdClass。
标签: php arrays laravel collections