【问题标题】:how to retrieve json response objects which stores values inside nested arrays in php如何检索将值存储在php中嵌套数组中的json响应对象
【发布时间】:2019-09-17 11:08:14
【问题描述】:

我有一个名为几何的键的json对象,几何键存储称为路径的数组,路径存储多维数组

我尝试循环遍历路径,但循环只返回第一个索引值

$result = curl_exec($ch);
foreach($JsonData->features as $chunk )
{
    $geo =$chunk->geometry->paths;
    echo $geo;
}

预期结果 - 将路径值存储到一个变量中。 实际结果 - 只返回一个值。

数据是……

"geometry": { "paths": [ [ [ -9131174.97888261, 3120622.68129019 ], 
    [ -9131167.41739487, 3120625.21649344 ], 
    [ -9131007.49336538, 3120782.33590721 ], 
    [ -9130998.82313552, 3120791.07506482 ] ] ] }

【问题讨论】:

  • “几何”:{ “路径”:[[[-9131174.97888261,3120622.68129019],[-9131167.41739487,3120625.21649344],[-9131007.49336538,3120782.33590721],[-9130998.82313552,3120791.07506482]]]}这数据如何

标签: php arrays json api


【解决方案1】:

下面的代码应该会让你回到正轨:

<?php
$json = '{ "paths": [ [ [ -9131174.97888261, 3120622.68129019 ], [ -9131167.41739487, 3120625.21649344 ], [ -9131007.49336538, 3120782.33590721 ], [ -9130998.82313552, 3120791.07506482 ] ] ] }';
$object = json_decode($json);

foreach($object->paths[0] as $path) {
    $geo = $path;
    echo $geo[0];
    echo $geo[1];
}

【讨论】:

    【解决方案2】:

    当您继续覆盖 $geo 中的值时,您只会得到 1 个值。您应该构建一个数组(使用[] 添加每个值),这应该会为您提供所有结果。您可能还需要调整访问数据的方式,我已将循环更新为$JsonData-&gt;features-&gt;geometry-&gt;paths[0]...

    $geo = [];
    foreach($JsonData->features->geometry->paths[0] as $chunk )
    {
        $geo[] =$chunk;
    }
    print_r($geo);
    

    这会导致类似...

    Array
    (
        [0] => Array
            (
                [0] => -9131174.9788826
                [1] => 3120622.6812902
            )
    
        [1] => Array
            (
                [0] => -9131167.4173949
                [1] => 3120625.2164934
            )
    
        [2] => Array
            (
                [0] => -9131007.4933654
                [1] => 3120782.3359072
            )
    
        [3] => Array
            (
                [0] => -9130998.8231355
                [1] => 3120791.0750648
            )
    
    )
    

    【讨论】:

    • 好的,我得到了上述格式的数据,现在我已经将数据插入到数据库中
    • 当我使用 $geo 变量插入查询时,抛出错误数组到字符串转换
    • 你不能一次插入,你的表格有纬度和经度作为单独的字段吗?您可能需要遍历 $geo 并一次插入一个。
    • 它没有经度或纬度,但有名为形状的列,数据类型为几何。此数据是形状文件格式
    • 我像这样循环 foreach($chunk->geometry->paths[0] as $geometry ) { $geo =$geometry; // echo '
      '.$geo[0].'
      '; // echo '
      '.$geo[1].'
      '; $geo1=$geo[0]; $geo1.=','.$geo[1]; }
    猜你喜欢
    • 2019-02-17
    • 1970-01-01
    • 2020-06-03
    • 2019-10-11
    • 2017-08-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 2016-05-07
    相关资源
    最近更新 更多