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

Php 在函数中使用不同的字符串?,php,arrays,google-maps,iterator,Php,Arrays,Google Maps,Iterator,我在编程方面完全是个笨蛋(但这只是我关于stackoverflow的第二个问题:-)) 通过foreach函数,我得到$Loncoord、$Latcoord、$gui的5个不同字符串值; 我可以通过下面编写的代码中的print\r看到这一点: "-5.68166666667","+24.6513888889","IMG_3308", 但是我现在想在$map->addMarkerByCoords(函数是什么?)中创建5个不同的标记 这可能吗 我需要将它们放入数组中并在(函数?)中调用它们,还是需

我在编程方面完全是个笨蛋(但这只是我关于stackoverflow的第二个问题:-))

通过foreach函数,我得到$Loncoord、$Latcoord、$gui的5个不同字符串值; 我可以通过下面编写的代码中的
print\r
看到这一点:

"-5.68166666667","+24.6513888889","IMG_3308",
但是我现在想在$map->addMarkerByCoords(函数是什么?)中创建5个不同的标记

这可能吗

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

尝试丢失一些引用

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

但是,为了正确回答这个问题,我们需要知道addMarkerByCoords希望您传递给它的内容。

如果您想使用每个参数的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()//注意标记后面的s

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

map::addMarkerByCoords()

一次添加多个标记:

map::addMarkersByCoords()

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

public function addMarkersByCoords( array $markers )
{
  foreach( $markers as $marker )
  {
      $this->addMarkerByCoord( $marker[ 'long' ], $marker[ 'lat' ], $marker[ 'img ' ], $marker[ 'name' ] );
  }
}
基本上,复数方法接受一个数组,并通过调用单数方法添加每个单独的标记

如果您想获得更多OOP,可以实现复数和单数方法来接受(一组)标记对象。但这与本次讨论无关


此外,建议使用复数方法来扩展映射的接口并不一定意味着不能通过在foreach循环中调用单数方法在对象外部添加多个标记。这完全取决于您的喜好。

向我们展示不停止工作的代码。现在的问题有点笼统——我的意思是,是的,如果有多个地址,你需要对它们进行循环,但这似乎不足以让它正常工作。你正在苦苦挣扎的术语是方法(而不是函数)。我一直在交换它们,因为基本上所有方法都是类中的函数。因此,将方法应用于对象就像将函数应用于变量一样。
public function addMarkersByCoords( array $markers )
{
  foreach( $markers as $marker )
  {
      $this->addMarkerByCoord( $marker[ 'long' ], $marker[ 'lat' ], $marker[ 'img ' ], $marker[ 'name' ] );
  }
}