farklı bir işlevi dizesini kullanabilir?

3 Cevap php

Ben programlama toplam noob değilim (ama bu stackoverflow :-) sadece benim ikinci soru).

By a foreach function I get 5 different string values for $Loncoord, $Latcoord, $gui; this I can see with the print_r in the code written below:

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

Ama şimdi $ haritası-> addMarkerByCoords (işlevi nedir?) 5 farklı işaretleri oluşturmak istiyorum.

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

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

Bu mümkün mü?

Do I need to put them in a array and call these in the (function ?) or do I need to use a foreach function? I tried both for a week now but I can't get it working.

Bana yardımcı olabilir misiniz?

The answers you produced gave me a turn in the right direction. Thank you for the quick responses and the explaining part.

Ama addMarkerByCoord (function! (aptal me)) ben googlemaps API buldum:

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 Cevap

It) (harita :: addMarkerByCoords uygulanmasına bağlıdır

Yöntemi (bir işlev) isim ve imza, sadece bir defada bir COORd eklemek mümkün olduğunu göstermektedir. Ama emin olmak için yöntemler gerçek imza bilmek gerekir you'ld. Yani soru şu: yöntemi, argüman olarak diziler izin verir?

Genellikle, aynı anda birden çok öğe eklemek için izin veren bir yöntem, adına amaçlanan eylem çoğul adı vardır:

Haritayı :: addMarkersByCoords () / / Marker sonra s not

'Harita' sınıf kendi uygulaması ise, bunu elbette gibi yolunu uygulamak için ücretsiz, ancak bu durumda akılda yöntemlerin açıklayıcı adlar tutun. Yani, bir işaretleyici ekleyin:

haritası :: addMarkerByCoords ()

Kerede birden fazla belirteci ekle:

haritası :: addMarkersByCoords ()

Genellikle bu gibi bir şey olarak çoğul yöntemi uygulamak olacaktır:

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

Temelde, çoğul yöntemi bir dizi kabul eder ve tekil yöntemini çağırarak her işaretleyici ekler.

Hatta daha OOP olsun istiyorsan, Marker nesneleri (bir dizi) kabul etmek çoğul ve tekil yöntemi uygulamak. Ama bu tartışma için particalarly alakalı değildir.

Ayrıca, çoğul bir yöntemle Haritası adlı arayüzü önerilen ekspansiyon nessecarily bir foreach döngüsünde tekil yöntemini çağırarak birlikte nesnenin dışında birden işaretçileri ekleyebilirsiniz olamaz anlamına gelmez. Bu gerçekten sizin tercihinize kalmış.

Her parametre için 5 farklı değerleri ile 5 kez addMarkerByCoords aramak istiyorsanız, o zaman her bir parametre için bir dizi inşa edebilirsiniz ve daha sonra foreach fonksiyonu ile yineleme:

$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]);

Tırnak bazı kaybetme deneyin ...

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

Düzgün olsa soruyu cevaplamak için, biz addMarkerByCoords ona geçmek için bekliyordum bilmek gerekir.