繁体   English   中英

在函数中使用不同的字符串?

[英]use different string in function?

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

通过foreach函数,我可以为$ Loncoord,$ Latcoord,$ gui获得5个不同的字符串值; 我可以在下面的代码中用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');

这可能吗?

我是否需要将它们放入数组并在(function?)中调用它们?还是需要使用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;
    }

如果要使用每个参数5个不同的值调用addMarkerByCoords 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]);

这取决于map :: addMarkerByCoords()的实现

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

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

map :: addMarkersByCoords()//注意Marker之后的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循环中调用单数方法在对象外部添加多个标记。 确实取决于您的偏好。

尝试丢失一些引号...

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

但是,要正确回答该问题,我们需要知道addMarkerByCoords希望您传递给它什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM