2016-11-04 82 views
1

如何通過addAttribute循環來寫入多個值。通過addAttribute獲取Php Xml循環

到目前爲止,它看起來像這樣:

 for($i = 0; $i < 10; $i++) 
     { 
      $this->title->addAttribute('names', "'".$this->Data[$i]->names.';'); 
     } 

我得到這個錯誤:

SimpleXMLElement::addAttribute(): Attribute already exists

當前的XML看起來像這樣(不循環,用一個靜態值名稱):

​​

但我希望它看起來像這樣循環後:

<button names=Tim;Tom;Ted"/> 

我該如何做到這一點?

回答

0

,你可以做到這一點,首先創建一個所有你的名字的數組,然後implode你在你的屬性 數組這應該工作

PHP

$names = []; 
foreach($this->Data as $key => $value) { 
    $names[] = $value->names; 
} 
$this->title->addAttribute('names', implode(';', $names)); 
0

在你的代碼示例中,你試圖添加相同的屬性。而不是它,你可以創建一個名稱數組。然後,您可以使用implode的膠水字符串連接數組元素。

$names = []; 

for($i = 0; $i < 10; $i++) 
{ 
    $names[] = $this->Data[$i]->names; 
} 

$this->title->addAttribute('names', implode(';',$names)); 
+1

一些解釋將是很好。 – Blackbam

+0

雖然此代碼片段可能會解決問題,但並不能解釋爲什麼或如何回答問題。請[請提供您的代碼解釋](// meta.stackexchange.com/q/114762/269535),因爲這確實有助於提高帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。 **舉報人/評論者:** [僅用於代碼解答,比如這個,downvote,請勿刪除!](// meta.stackoverflow.com/a/260413/2747593) –

+0

我錯過了這一點,謝謝所有的警告。 – nejat

0

你不需要使用addAttribute()爲存在的屬性添加值。只有增加新的價值屬性像底部代碼

for($i = 0; $i < 10; $i++) 
{ 
    $this->title['names'] .= $this->Data[$i]->names.';' 
} 

檢查結果demo