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

我正在尝试从 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 (这就是我能想到的逻辑)


明月笑刀无情
浏览 97回答 2
2回答

慕尼黑的夜晚无繁华

您可以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

Helenr

我不明白您的要求,但根据语法,在您的情况下,键将是数组的索引,您可以获得如下数据:foreach($links as $link){  echo $link['rel'].' = '.$link['href'];}
打开App,查看更多内容
随时随地看视频慕课网APP