繁体   English   中英

展平json_decode创建的多维数组

[英]Flattening multidimensional array created by json_decode

我正在尝试展平json_decode()返回的多维数组,但是出现问题。 我进行了一些研究,但所有解决方案似乎都跳过了我的一些数据。 如果我运行这个和比较echo “d数据var_dump()我肯定没有得到一切,我不知道为什么。

这是我到目前为止的内容:

<?php
function array_flatten($array) { 
    if (!is_array($array)) { 
        return false; 
    }
    $result = array(); 
    foreach ($array as $key => $value) { 
        if (is_array($value)) { 
            $result = array_merge($result, array_flatten($value)); 
        } else { 
            $result[$key] = $value; 
        } 
    } 
    return $result; 
}
for ($x = 1; $x <= 1; $x++) {
    $response = file_get_contents('https://seeclickfix.com/api/v2/issues?page='.$x
                                 .'&per_page=1');
    // Decode the JSON and convert it into an associative array.
    $jsonDecoded = json_decode($response, true);
    $flat = array_flatten($jsonDecoded['issues']);
    foreach($flat as $item) {
        echo $item;
        echo "<br>";
    }
}
?>

文档中所示array_merge将使用相同的键覆盖值。 例如,在您发布的链接中,您将丢失一些网址。 您可以通过在展平的数组中创建唯一键来解决此问题。 例如,通过将前缀传递给函数:

function array_flatten($array, $prefix = '') { 
  if (!is_array($array)) { 
    return false; 
  } 
  $result = array(); 
  foreach ($array as $key => $value) { 
    if (is_array($value)) { 
      $result = array_merge($result, array_flatten($value, $prefix.'_'.$key)); 
    } else { 
      $result[$prefix.'_'.$key] = $value; 
    } 
  } 
  return $result; 
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM