2016-11-04 4 views
1

Wie kann ich durch addAttribute durchlaufen, um mehrere Werte zu schreiben.PHP Xml Schleife durch addAttribute

Bisher sieht es wie folgt aus:

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

ich diesen Fehler:

SimpleXMLElement::addAttribute(): Attribute already exists

derzeit den xml wie folgt aussieht (ohne die Schleife, mit einem statischen Wert Name):

<button names=Tim;"/> 

aber ich möchte, dass es nach der Schleife so aussieht:

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

Wie erreiche ich das?

Antwort

0

Sie können dies erreichen, indem man zuerst ein Array mit all Ihren Namen erstellen und dann implode Ihr Array in Ihrem Attribut Dies sollte

PHP

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

In Ihrem Codebeispiel versuchen Sie, dasselbe Attribut hinzuzufügen. Stattdessen können Sie ein Array mit Namen erstellen. Dann können Sie Array-Elemente mit einer Klebestrang mit implode verbinden.

$names = []; 

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

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

Eine Erklärung wäre schön zuzuschreiben. – Blackbam

+0

Während dieses Code-Snippet das Problem lösen kann, erklärt es nicht, warum oder wie es die Frage beantwortet. Bitte [fügen Sie eine Erklärung für Ihren Code hinzu] (// meta.stackexchange.com/q/114762/269535), da dies wirklich zur Verbesserung der Qualität Ihres Posts beiträgt. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. ** Flaggers/Rezensenten: ** [Für Code-only Antworten wie diese, Downvote, nicht löschen!] (// meta.stackoverflow.com/a/260413/2747593) –

+0

Ich habe diesen Punkt verpasst, danke Alles für die Warnung. – nejat

0

Sie funktionieren nicht Sie müssen addAttribute() verwenden, um dem vorhandenen Attribut einen Wert hinzuzufügen. Nur neuen Wert hinzufügen, wie unten Code

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

Prüfergebnis in demo