如何在php(多维数组)中解码来自api的json



我想在wordpress中用php解码json代码。

这是我的密码。但没有起作用。

function decode_func(){
$json = file_get_contents('https://api.pray.zone/v2/times/today.json?city=jakarta');
$decoded_json = json_decode($json,true);
$results = $decoded_json['results'];
foreach($results as $result) {
$datetime = $result['datetime'];
foreach($datetime as $datetim) {
$times = $datetim['times'];
foreach($times as $time) {
echo $time['Sunrise'];
}
}
}
}
add_shortcode('decode','decode_func');

我测试了您的代码,发现您的属性目标不正确。

为了单独通过foreach循环而不是直接针对该属性来获得Sunrise属性,您需要执行以下操作。

$json         = file_get_contents('https://api.pray.zone/v2/times/today.json?city=jakarta');
$decoded_json = json_decode($json,true);
$results      = $decoded_json['results'];
foreach ($results as $key => $result) {
if ($key !== 'datetime') continue;
foreach($result as $datetime) {
foreach ($datetime as $time) {
if (!empty($time['Sunrise'])) echo $time['Sunrise'];
}
}
}

编辑

为了得到这座城市,我用elseif创造了一个新的if条件
代码几乎相同,因为位置不是多维数组,因此获取城市值的机会较少

$json         = file_get_contents('https://api.pray.zone/v2/times/today.json?city=jakarta');
$decoded_json = json_decode($json,true);
$results      = $decoded_json['results'];
foreach ($results as $key => $result) {
if ($key === 'datetime') {
foreach($result as $datetime) {
foreach ($datetime as $time) {
if (!empty($time['Sunrise'])) echo $time['Sunrise'];
}
}
} else if ($key === 'location') {
if (!empty($result['city'])) echo $result['city'];
}
}

最新更新