php数组

kq0g1dla  于 2021-06-17  发布在  Mysql
关注(0)|答案(3)|浏览(333)

我将googleMap数据从mysql拉入php数组。我将此代码用作基础:
https://github.com/rajkavinchetty/google-maps-api-with-php-mysql/blob/master/index.php
它几乎可以完美地工作。从数组中提取lat/long数据并设置标记。

...
$locations[]=array( 'name'=>$name, 'lat'=>$latitude, 'lng'=>$longitude, 'lnk'=>$link );
...

但是我对信息窗口的标题/内容有问题。
在我使用的基本示例中,内容被格式化为链接:

var locations = [
    <?php for($i=0;$i<sizeof($locations);$i++){ $j=$i+1;?>
    [
        'AMC Service',
        '<p><a href="<?php echo $locations[0]['lnk'];?>"><?php echo $locations[0]['name'];?></a></p>',
        <?php echo $locations[$i]['lat'];?>,
        <?php echo $locations[$i]['lng'];?>,
        0
    ]<?php if($j!=sizeof($locations))echo ","; }?>
];

但是变量只从数组中提取第一个链接和名称,它不经过循环。我试过很多不同的变量,比如

<?php echo $locations[$i]['name'];?>

但这是一个错误。
我既不擅长php数组,也不擅长loop或java,所以我在摸索线索。我已经浏览了这里的所有相关问题以寻求帮助,还参考了google堆栈。
任何帮助都将不胜感激。
更新:
前三个答复很有用,谢谢,但还没有。
在andy的评论和divyamohan的鼓励下,原来的解决方案应该是有效的,我意识到肯定有一些json格式问题,所以我尝试:

<?php echo json_encode($locations[$i]['name']);?>

这是有效的,现在我可以让这些循环通过。
但仍然试图让它作为一个链接工作。我试图解决与反斜杠哈迪克和大卫观察,但这仍然不起作用。到了一半。

u2nhd7ah

u2nhd7ah1#

你得换条线

'<p><a href="<?php echo $locations[0]['lnk'];?>"><?php echo $locations[0]['name'];?></a></p>'

'<p><a href="<?php echo $locations[0][\'lnk\'];?>"><?php echo $locations[0][\'name\'];?></a></p>'

您需要添加反斜杠(\)字符以从字符串文字转义引号。

luaexgnf

luaexgnf2#

所以我终于找到了解决问题的办法。感谢所有人的评论,帮助我从另一个Angular 看待它。
最后,问题不在代码上。问题是数据。这应该是显而易见的。在links列中,我有带斜杠的url,names列中的文本包括撇号和外来字符。这些结合在一起会抛出json错误。我清理了所有的数据和修改后的代码完美地工作。

<p><a href="<?=$locations[$i]['lnk']?>"><?=$locations[$i]['name']?></a></p>

再次感谢您的评论。

mrwjdhj3

mrwjdhj33#

'<p><a href="<?=$locations[$i]["lnk"]?>"><?=$locations[$i]["name"]?></a></p>'

只要在你的代码中替换这个,它就可以工作了。

相关问题