2016-11-04 79 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