【问题标题】:converting data from sqlite PHP从 sqlite PHP 转换数据
【发布时间】:2016-02-14 13:37:53
【问题描述】:

我有一些坐标存储在 sqlite 数据库中。我需要在传单上的热图中使用这些坐标。 我正在使用以下插件:https://github.com/Leaflet/Leaflet.heat

数据需要采用以下格式:

var addressPoints = [
[52.344161, 4.912279],
[52.342425, 4.913038],
[52.342034, 4.913256],
[52.341987, 4.912462]];

我使用 PHP 从 sqlite 数据库中提取数据:

$db = new SQLite3('jwtrack.sqlite');
$results = $db->query("SELECT coord FROM trackjw");
while ($row = $results->fetchArray()) {
echo json_encode($row['coord']);
}
$db->close();

检索到的数据如下:

"52.344161000, 4.912279000""52.342425000, 4.913038200""52.342034000, 4.913256000""52.341987000, 4.912462000""52.342336000, 4.912106000"

如何以正确的方式获取插入到“var addressPoints”中的 SQLite 数据?

提前致谢,

JWB

【问题讨论】:

  • SQLite DB 中coord 的列类型是什么?

标签: javascript php sqlite leaflet heatmap


【解决方案1】:

如果数据遵循相同的格式,在开头和结尾加上双引号,在对之间使用双引号,则以下应生成一个以该对作为条目的数组。

$data='"52.344161000, 4.912279000""52.342425000, 4.913038200""52.342034000, 4.913256000""52.341987000, 4.912462000""52.342336000, 4.912106000"';

$pairs=explode('""',trim($data,'"'));
print_r($pairs);

输出:

Array
(
    [0] => 52.344161000, 4.912279000
    [1] => 52.342425000, 4.913038200
    [2] => 52.342034000, 4.913256000
    [3] => 52.341987000, 4.912462000
    [4] => 52.342336000, 4.912106000
)

你可以改变你的初始 php,但是这会产生不同的数据

$db = new SQLite3('jwtrack.sqlite');
$results = $db->query("SELECT coord FROM trackjw");
$json=array();

while( $row = $results->fetchArray() ) {
    $json[]=$row['coord'];
}
$db->close();
$json=json_encode( $json );
echo $json;

如果你需要这个值而不需要引号......

$json=str_replace('"','',$json);

在javascript中你可以这样做:

echo "var addressPoints={$json};";

【讨论】:

  • 谢谢。这为我指明了正确的方向。我现在可以工作了。
  • 嗨,我一直在玩它,当在一个 PHP 文件中使用它时,使用 var addressPoints = ;跨度>
猜你喜欢
  • 2019-04-15
  • 2013-10-24
  • 2011-09-05
  • 1970-01-01
  • 1970-01-01
  • 2014-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多