【问题标题】:PHP Array to JSON - Array Formation Help Needed [closed]PHP数组到JSON - 需要数组形成帮助[关闭]
【发布时间】:2016-03-14 03:28:34
【问题描述】:

我正在尝试为谷歌地图 API 创建一个 json 提要。

我可以生成的 JSON 提要是:

 [{"latitude":"40.651602","longitude":"-111.918734","title":"64439","content":"test"}][{"latitude":"41.330500","longitude":"-111.851600","title":"80283","content":"test"}][{"latitude":"40.624500","longitude":"-111.976500","title":"95964","content":"test"}][{"latitude":"40.715020","longitude":"-111.494717","title":"96995","content":"test"}][{"latitude":"40.664200","longitude":"-111.843295","title":"101724","content":"test"}][{"latitude":"40.513917","longitude":"-111.403612","title":"245697","content":"test"}][{"latitude":"40.509000","longitude":"-111.419919","title":"245716","content":"test"}][{"latitude":"40.473700","longitude":"-111.414499","title":"245742","content":"test"}][{"latitude":"40.509943","longitude":"-111.402999","title":"245792","content":"test"}][{"latitude":"40.512200","longitude":"-111.477263","title":"245874","content":"test"}][{"latitude":"40.526623","longitude":"-111.475199","title":"245904","content":"test"}][{"latitude":"40.530400","longitude":"-111.487500","title":"245905","content":"test"}][{"latitude":"40.526619","longitude":"-111.473531","title":"245921","content":"test"}][{"latitude":"40.517013","longitude":"-111.487827","title":"245926","content":"test"}][{"latitude":"40.519500","longitude":"-111.497780","title":"245940","content":"test"}][{"latitude":"40.511981","longitude":"-111.409799","title":"245944","content":"test"}][{"latitude":"39.373348","longitude":"-111.574996","title":"245946","content":"test"}][{"latitude":"40.514900","longitude":"-111.402590","title":"245982","content":"test"}][{"latitude":"40.513700","longitude":"-111.467712","title":"246093","content":"test"}][{"latitude":"40.515600","longitude":"-111.398192","title":"246124","content":"test"}]

生成此提要的代码是:

while($data = $do->FetchRow($search)) {
    //print_r($data);
    $a = array();
    $a[] = array("latitude" => $data['latitude'], "longitude" => $data['longitude'], "title" => $data['listno'], "content" => "test");

    echo json_encode($a);
    //echo json_encode(array("markers" => $a), JSON_UNESCAPED_SLASHES);
}

我需要的是生成的数组看起来像这样:

var json = [{"title":"Helgelandskysten","longitude":"12.63376","latitude":"66.02219"},{"title":"Tysfjord","longitude":"16.50279","latitude":"68.03515"},{"title":"Sledehunds-ekspedisjon","longitude":"7.53744","latitude":"60.08929"},{"title":"Amundsens sydpolferd","longitude":"11.38411","latitude":"62.57481"},{"title":"Vikingtokt","longitude":"6.96781","latitude":"60.96335"},{"title":"Tungtvann- sabotasjen","longitude":"8.49139","latitude":"59.87111"}];

我尝试过使用数组合并、数组推送等。我很困惑,有人想要一个好的拼图吗? :)

【问题讨论】:

    标签: php arrays json google-maps-api-3 multidimensional-array


    【解决方案1】:

    好的,您正在做的事情有几个问题。首先,您为每个单独的行回显一个 json 编码的字符串,因为您在循环中调用它。这就是为什么您最终会在生成的字符串中包含多个 [] 数组。

    你需要做的是:

    $a = array();
    while($data = $do->FetchRow($search)) {
       $a[] = array("latitude" => $data['latitude'], "longitude" => $data['longitude'], "title" => $data['listno']);
    }
    echo json_encode($a);
    

    另外,你得到的是一个数字而不是你想要的标题。我无法直接帮助你,但你正在使用:

    $data['listno']
    

    作为标题,我假设它实际上代表“列表编号”。您很可能必须使用“标题”字段(如果存在)或修改您的搜索查询。

    【讨论】:

    • 这修复了数组!谢谢你。有趣的是,谷歌地图没有填充大声笑。该代码适用于其他人的服务器,但不知何故不适用于我的服务器。有趣
    • 没有看到更多的代码,这很难真正响应。如果这种情况持续存在,您应该提出另一个问题。不过,我很高兴您的阵列问题得到了解决。
    • 不用担心。如果我需要地图方面的帮助,我会提出一个新问题,既然你已经正确回答了这个问题,我会觉得在这个问题上添加更多内容会很糟糕!
    【解决方案2】:

    只是:

    echo json_encode(array("latitude" => $data['latitude'], "longitude" => $data['longitude'], "title" => $data['listno'], "content" => "test"));
    

    我猜你只有 1 行就足够了。

    【讨论】:

    • 如果我这样做,它会给我这个:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-24
    相关资源
    最近更新 更多