功能中使用不同的字符串?

时间:2009-08-30 18:34:37

标签: php arrays google-maps iterator

我是编程中的总NOOB(但这只是我在stackoverflow上的第二个问题:-))。

通过foreach函数,我得到5个不同的字符串值$ Loncoord,$ Latcoord,$ gui; 我可以在下面的代码中看到print_r

"-5.68166666667","+24.6513888889","IMG_3308",

但我现在想在$ map-> addMarkerByCoords中创建5个不同的标记(函数是吗?)。

print_r ("$Loncoord");
print_r ("$Latcoord");
print_r ("$gui");

$map->addMarkerByCoords("$Loncoord","$Latcoord","$gui",'OldChicago');

这可能吗?

我是否需要将它们放在一个数组中并在(函数?)中调用它们,还是需要使用foreach函数? 我现在试了两个星期,但我无法让它发挥作用。

你能帮助我吗?

你产生的答案让我转向正确的方向。 感谢您的快速回复和解释部分。

但是对于addMarkerByCoord(函数!(傻瓜))我在googlemaps API中找到了这个:

function addMarkerByCoords($lon,$lat,$title = '',$html = '',$tooltip = '') {
        $_marker['lon'] = $lon;
        $_marker['lat'] = $lat;
        $_marker['html'] = (is_array($html) || strlen($html) > 0) ? $html : $title;
        $_marker['title'] = $title;
        $_marker['tooltip'] = $tooltip;
        $this->_markers[] = $_marker;
        $this->adjustCenterCoords($_marker['lon'],$_marker['lat']);
        // return index of marker
        return count($this->_markers) - 1;
    }

3 个答案:

答案 0 :(得分:1)

如果要为每个参数调用addMarkerByCoords 5次,每个参数有5个不同的值,那么可以为每个参数构建一个数组,然后使用foreach函数进行迭代:

$Loncoord=array(1,2,3,4,5);
$Latcoord=array(1,2,3,4,5);
$gui=array(1,2,3,4,5);
$city=array('OldChicago','bla','bla','bla','bla');
foreach($Loncoord as $k=>$v)
   $map->addMarkerByCoords($Loncoord[$k],$Latcoord[$k],$gui[$k],$city[$k]);

答案 1 :(得分:1)

这取决于map :: addMarkerByCoords()

的实现

方法(非函数)名称及其签名表明您一次只能添加一个坐标。但是要确保你需要知道真正的签名方法。所以问题是:该方法是否允许数组作为参数?

通常,一种允许您一次添加多个项目的方法,其名称中包含预期操作的复数名称:

map :: addMarkersByCoords()//记下标记后的s

如果'map'类是您自己的实现,您可以按照自己喜欢的方式自由实现它,但在这种情况下,请记住方法的描述性名称。所以,添加一个标记:

地图:: addMarkerByCoords()

一次添加多个标记:

地图:: addMarkersByCoords()

通常,您将实现复数方法,如下所示:

public function addMarkersByCoords( array $markers )
{
  foreach( $markers as $marker )
  {
      $this->addMarkerByCoord( $marker[ 'long' ], $marker[ 'lat' ], $marker[ 'img ' ], $marker[ 'name' ] );
  }
}

基本上,复数方法接受一个数组,并通过调用单数方法添加每个单独的标记。

如果你想获得更多的OOP,你可以实现复数和单数方法来接受(一系列)Marker对象。但这与此次讨论无关。

此外,建议使用复数方法扩展Map的界面并不意味着您不能在foreach循环中调用singular方法在对象外部添加多个标记。这取决于你的偏好。

答案 2 :(得分:0)

尝试丢失部分报价......

$map->addMarkerByCoords($Loncoord,$Latcoord,$gui,'OldChicago');

为了正确回答这个问题,我们需要知道addMarkerByCoords期望你传递给它的是什么。