首页 > 解决方案 > 解析 JSON 多级数组并查找多级键值

问题描述

我需要帮助来查找/打印给定数组中的所有值。

我可以在数组的“级别 1”上获得所有值,但不能更深。解析多级数组的通用代码是什么。我想如果我可以解析 api json,那么我可以对数据做任何其他需要的事情。

我也收到了数组到字符串的转换警告,但我明确地命名了元素——我一定遗漏了一些东西。

<?php
$drugs = fopen("http://dgidb.org/api/v2/interactions.json?drugs=FICLATUZUMAB", "r");
$json_drugs = stream_get_contents($drugs);
fclose($drugs);
$data_drugs = json_decode($json_drugs,true);

print_r($data_drugs);        // Dump all data of the Array

foreach ($data_drugs as $key => $value)
    {
    if (empty($value[0]["searchTerm"])) {echo "-<br>";} else {echo "searchTerm  : " . $value[0]["searchTerm"] . "<br>";};
    if (empty($value[0]["searchTerm"])) {echo "-<br>";} else {echo "searchTerm  : " . $value[0]["searchTerm"] . "<br>";};
    if (empty($value[0]["drugName"])) {echo "-<br>";} else {echo "drugName  : " . $value[0]["drugName"] . "<br>";};
    if (empty($value[0]["chemblId"])) {echo "-<br>";} else {echo "chemblId  : " . $value[0]["chemblId"] . "<br>";};
    if (empty($value[0]["interactions"])) {echo "INTERACTIONS : NONE" . "<br>";} else {echo "INTERACTIONS : " . $value[0]["interactions"] . "<br>";};
    if (empty($value[0]["interactions"][0]["interactionId"])) {echo "-<br>";} else {echo ">InteractionId  : " . $value[0]["interactions"][0]["interactionId"] . "<br>";};
    if (empty($value[0]["interactions"][0]["interactionTypes"])) {echo "INTERACTION TYPES : NONE" . "<br>";} else {echo ">Interaction Types : " . $value[0]["interactions"][0]["interactionTypes"] . "<br>";};
    foreach ($data_drugs as $key => $value)
          {
          if (empty($value[0]["interactions"][0]["interactionTypes"][0])) {echo "-";} else {echo ">>interactionTypes : " . $value[0]["interactions"][0]["interactionTypes"][0] . "<br>";};
          }
    if (empty($value[0]["interactions"][0]["geneName"])) {echo "-<br>";} else {echo ">GeneName  : " . $value[0]["interactions"][0]["geneName"] . "<br>";};
    if (empty($value[0]["interactions"][0]["geneLongName"])) {echo "-<br>";} else {echo ">GeneLongName  : " . $value[0]["interactions"][0]["geneLongName"] . "<br>";};
    if (empty($value[0]["interactions"][0]["geneEntrezId"])) {echo "-<br>";} else {echo ">GeneEntrezId  : " . $value[0]["interactions"][0]["geneEntrezId"] . "<br>";};
    if (empty($value[0]["interactions"][0]["sources"])) {echo "SOURCES : NONE" . "<br>";} else {echo ">Sources : " . $value[0]["interactions"][0]["sources"] . "<br>";};
    if (empty($value[0]["interactions"][0]["sources"][0])) {echo "-<br>";} else {echo ">>sources : " . $value[0]["interactions"][0]["sources"][0] . "<br>";};
    if (empty($value[0]["interactions"][0]["pmids"])) {echo ">PMIDs  : NONE" . "<br>";} else {echo ">PMIDs  : " . $value[0]["interactions"][0]["pmids"] . "<br>";};
    if (empty($value[0]["interactions"][0]["pmids"][0])) {echo "-<br>";} else {echo ">>PMIDs  : " . $value[0]["interactions"][0]["pmids"][0] . "<br>";};
    if (empty($value[0]["interactions"][0]["score"])) {echo "-<br>";} else {echo ">Score  : " . $value[0]["interactions"][0]["score"] . "<br>";};
      }
?>

我可以在数组的“级别 1”上获得所有值,但不能更深。解析多级数组的通用代码是什么。我想如果我可以解析 api json,那么我可以对数据做任何其他需要的事情。

我也收到了数组到字符串的转换警告,但我明确地命名了元素。

标签: phpjsonparsing

解决方案


推荐阅读