从多维关联JSON获取特定值

问题描述 投票:1回答:2

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

php json
2个回答
2
投票

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

array_column

输出

advertisements

if(($key = array_search('advertisements', array_column($links, 'rel'))) !== false) { echo $links[$key]['href']; }

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

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

输出:

Demo on 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');


0
投票

我不理解您的要求,但按照语法,在您的情况下,键将是数组的索引,您可以按以下方式获取数据:

https://api.teamsnap.com/v3/teams
© www.soinside.com 2019 - 2024. All rights reserved.