Php Xml循环通过addAttribute

时间:2016-11-04 16:32:26

标签: php xml attributes simplexml

如何循环使用addAttribute写入多个值。

到目前为止看起来像这样:

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

我收到此错误:

  

SimpleXMLElement :: addAttribute():属性已存在

当前xml看起来像这样(没有循环,带有静态值名称):

<button names=Tim;"/>

但我想在循环之后看起来像这样:

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

我该如何实现这个目标?

3 个答案:

答案 0 :(得分:0)

在您的代码示例中,您尝试添加相同的属性。您可以使用名称创建一个数组,而不是它。然后,您可以使用implode的粘合字符串连接数组元素。

$names = [];

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

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

答案 1 :(得分:0)

您可以先创建一个包含所有名称的数组,然后在属性中implode数组来实现此目的 这应该工作

<强> PHP

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

答案 2 :(得分:0)

您无需使用addAttribute()为存在属性添加值。只为像底部代码

这样的属性添加新值
for($i = 0; $i < 10; $i++)
{
    $this->title['names'] .= $this->Data[$i]->names.';'
}

检查demo

中的结果