如何解决使用 PHP Json 对传入数据进行分段
传入json数据的形式:
{
"statusCode": 200,"message": "success","result": [
{
"longitude": -87.06687,"start_location_latitude": 20.63589,"start_location_longitude": -87.06687,"end_location_latitude": 20.63589,"end_location_longitude": -87.06687,"highlights": [
{
"title": "Oh Yes...Mezcal Shots","url": "https://phoenix-cdn.azureedge.net/phoenix-blob-public-exps/1396_Mezcal_Shot.jpg"
},{
"title": "Playa Del Carmen Beachfront","url": "https://phoenix-cdn.azureedge.net/phoenix-blob-public-exps/1396_Playa_Del_Carmen-Beach_Punta_Esmeralda.jpg"
},{
"title": "Visit the Market","url": "https://phoenix-cdn.azureedge.net/phoenix-blob-public-exps/1396_Playa_Del_Carmen.jpg"
}
]
}
]
}
此传入数据合并为一行。
但是我想要做的是获取这些数据中的前 4 个,例如,将它们放入单独的变量中并使用它们。然而,我从来没能做到这一点。
我的代码:
foreach($UnlockData as $highlights)
{
foreach($highlights as $SingleImage)
{
if(strlen($SingleImage['url']) > 3) {
echo $SingleImage['url'];
}
}
}
解决方法
这将返回 result
中每个条目的前 4 个亮点。我使用 json 对象 vs 数组,因为我发现将它用作对象可以更容易阅读代码。
<?php
$json = json_decode($incomingJSON);
foreach ($json->result as $result) {
$ctr = 0 ;
foreach($result->highlights as $highlight) {
if (strlen($highlight->url) < 5) continue;
echo "<P>" . $highlight->title. " - " . $highlight->url;
$ctr ++;
if ($ctr>3) break;
}
}
,
如果只有一个 result
,那么只需从 url
中获取所有 highlights
(不清楚为什么 strlen
):
$urls = array_column($array['result'][0]['highlights'],'url');
foreach($urls as $url) {
if(strlen($url) > 3) {
echo $url;
}
}
如果有多个 result
,则获取所有 highlights
,然后从中获取所有 url
:
$urls = array_column(array_column($array['result'],'highlights'),'url']);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。