PHP数组到JSON - 需要数组形成帮助

时间:2015-12-09 00:56:55

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

我正在尝试为google maps API创建一个json供稿。

我可以生成的JSON Feed是:

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);
}

生成此Feed的代码是:

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"}];

我需要的是,生成的数组如下所示:

public static string AlphaToAscii(string str)
{
    var result = string.Empty;
    foreach (char c in str)
    {
         if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
            result += (int)c;
        else if (c >= '0' && c <= '9')
            result += c;
    }
    return result;
}

我尝试过使用数组合并,数组推送等等。我很难过,有人想要一个好的谜题吗? :)

2 个答案:

答案 0 :(得分:1)

只是:

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

因为我猜你只有一行,所以应该这样做。

答案 1 :(得分: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']

作为标题,我认为实际上代表“列表编号”。您很可能不得不使用字段“title”(如果存在)或修改搜索查询。