为了账号安全,请及时绑定邮箱和手机立即绑定

从多维关联 JSON 中获取特定值

从多维关联 JSON 中获取特定值

PHP
明月笑刀无情 2022-06-11 18:55:42
我正在尝试从 JSON 响应中获取特定值,但无法确定如何定位它。我可以遍历它,但我只想基于键输出单个值,因为响应是动态的,并不总是保证具有相同的输出。我已将 JSON 响应转换为数组,这里是我目前拥有的示例:Array (     [0] => Array (         [rel] => advertisements         [href] => https://api.teamsnap.com/v3/advertisements     )     [1] => Array (         [rel] => active_season_team         [href] => https://api.teamsnap.com/v3/teams     )     [2] => Array (         [rel] => assignments         [href] => https://api.teamsnap.com/v3/assignments     )     [3] => Array (         [rel] => availabilities         [href] => https://api.teamsnap.com/v3/availabilities     ) )我需要能够通过键“rel”来回显“href”值。我努力了:foreach($links as $key => $value) {  echo $key['advertisements'];}但是需要一种方式将 $links 说成 $key->rel = $value->http (这就是我能想到的逻辑)
查看完整描述

2 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

您可以array_search在rel列上使用(使用 提取array_column)来查找匹配值的键(例如advertisements)。如果存在,则可以直接访问该值:


if(($key = array_search('advertisements', array_column($links, 'rel'))) !== false) {

    echo $links[$key]['href'];

}

输出


https://api.teamsnap.com/v3/advertisements

演示是 3v4l.org


为了获得更大的灵活性,您可以将其编写为一个函数:


function get_link($links, $cat) {

    if(($key = array_search($cat, array_column($links, 'rel'))) !== false) {

        return $links[$key]['href'];

    }

    else {

        return '';

    }

}


echo get_link($links, 'active_season_team');

输出:


https://api.teamsnap.com/v3/teams


查看完整回答
反对 回复 2022-06-11
?
Helenr

TA贡献1780条经验 获得超3个赞

我不明白您的要求,但根据语法,在您的情况下,键将是数组的索引,您可以获得如下数据:


foreach($links as $link){

  echo $link['rel'].' = '.$link['href'];

}


查看完整回答
反对 回复 2022-06-11
  • 2 回答
  • 0 关注
  • 96 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信