【发布时间】:2014-06-05 04:40:33
【问题描述】:
我正在尝试创建一个 geoJSON 数组,但我无法访问查询结果中的值。当我通过将“坐标”硬编码为值“2”和“4”来测试我的功能时,一切正常。
但是,当我尝试通过引用 $row['v2_lat'] 和 $row['v2_lng'] 来设置“坐标”时,这会导致错误。这是PHP代码:
function getGeoJSON2(){
$m = $this->input->POST('municipality');
$l = $this->input->POST('saleslimit');
$q = $this->db->query("SELECT RollNum, Address, v2_lat, v2_lng FROM tblontario WHERE Municipality = '".$m."'"." LIMIT ".$l);
$res = $q->result();
if(!empty($res)){
$geoArr = Array(
"type" => "MultiPoint",
"coordinates" => Array()
);
foreach ($q->result() as $row) {
//$geoArr["coordinates"][] = Array(2,4);
$geoArr["coordinates"][] = Array($row['v2_lat'],$row['v2_lng']);
}
$geoJSON = json_encode($geoArr);
echo $geoJSON;
} else {
echo "{}";
}
}
这是查询结果的示例,在应用json_encode后:
[
{
"RollNum": "193601001000100",
"Address": "12 STEELES AVE E",
"v2_lat": "43.8561002",
"v2_lng": "-79.3370188"
},
{
"RollNum": "193601001000400",
"Address": "18 STEELES AVE E",
"v2_lat": "43.7986849",
"v2_lng": "-79.4178564"
},
{
"RollNum": "193601001002100",
"Address": "36 STEELES AVE E",
"v2_lat": "43.7987492",
"v2_lng": "-79.4169781"
}
]
我不明白为什么我似乎无法在我的foreach 循环中访问$row['v2_lat'] 和$row['v2_lng'] 值。有任何想法吗?谢谢。
编辑:我想查看$res 变量,这是从查询返回的数组格式:
Array
(
[0] => stdClass Object
(
[RollNum] => 180501000100100
[Address] => 2 HILEY AVE
[v2_lat] => 43.8526509
[v2_lng] => -79.0499877
)
[1] => stdClass Object
(
[RollNum] => 180501000100200
[Address] => 4 HILEY AVE
[v2_lat] => 43.8526678
[v2_lng] => -79.0501957
)
[2] => stdClass Object
(
[RollNum] => 180501000100300
[Address] => 6 HILEY AVE
[v2_lat] => 43.8526848
[v2_lng] => -79.0504037
)
)
这最后两个结果之间的差异有什么意义?
【问题讨论】:
-
您确定
$row['v2_lat']和$row['v2_lng']都包含您认为的内容吗?var_dump()他们并先检查一下。如果有空格字符,请使用trim()将其删除。 -
@Dagon -
Array($row['v2_lat'],$row['v2_lng']);不是简单地从查询结果中创建一个 lat 和 lng 值的数组吗?这就是我认为它正在做的事情。
标签: php codeigniter geojson