2011-10-12 40 views
1

您好我正在嘗試使用動態數組名稱。但是當我運行此代碼時,出現錯誤$marker is undefined如何在php中設置動態arrray名稱

if (isset($arr)) { 
       foreach ($arr as $key => $value) { 

        $marker.$key = array(); 

        $marker.$key ['position'] = $value['lat'] . ',' . $value['long']; 
        $marker.$key ['draggable'] = 'TRUE'; 
        $marker.$key ['ondragend'] = "test(this.getPosition().lat(),this.getPosition().lng())"; 

        $this->ci->googlemaps->add_marker($marker.$key); 
        $i++; 
        } 

      } 

我該如何創建動態數組名?

+2

你做錯了!試試像$ marker [$ key] – Rikesh

+0

$ marker和$ key的值是什麼? –

回答

2

閱讀精細手冊。 PHP中的點運算符與Javascript和類似語言中的點運算符完全無關 - 它執行字符串連接。我不太明白你在做什麼,但我確信字符串連接不是它。

爲了澄清,這是什麼一樣:

$marker.$key ['draggable'] = 'TRUE'; 

...這是;

  • 獲得$marker的值,其解釋爲字符串
  • 獲得$key的值,其解釋爲字符串
  • 串連$marker$string
  • 解釋得到的字符串作爲一個數組,並將'draggable'元素設置爲字符串(!)'TRUE'。我什至不知道這是什麼 - 字符串允許數組式的索引(它引用單個字符),但我不知道非整數索引會產生什麼。
1

試試這個,當你進行連接時,PHP只看到$ key是一個數組,並且連接錯誤的方式。無論如何,其中是$標記定義?在Php

if (isset($arr)) { 
       foreach ($arr as $key => $value) { 
        $myarray = $marker.$key; 
        $myarray = array(); 

        $myarray['position'] = $value['lat'] . ',' . $value['long']; 
        $myarray['draggable'] = 'TRUE'; 
        $myarray['ondragend'] = "test(this.getPosition().lat(),this.getPosition().lng())"; 

        $this->ci->googlemaps->add_marker($myarray); 
        $i++; 
        } 
      } 
+0

應該在某處使用'$$'來獲得預期的效果。 – mario

0

動態數組名可以這樣

foreach($arr as $key => $value) { 
$myarray[$key] = $value; 
} 

做然而,你也可以這樣做,設置數組變量

foreach($arr as $key => $value) { 
${$key}[$key] = $value; 
}