改变当前孩子的价值 - SimpleXML PHP

时间:2015-08-20 07:09:44

标签: php xml simplexml

设置非常简单。你如何使用SimpleXML的children()迭代函数,然后修改当前节点的值?以下是一个场景:

<Ad>
  <Unit>Value</Unit>
  <Size>Value</Size>
  <Time>Value</Time>
</Ad>

我试图使用children()然后分配给当前的Child来改变&#34; Value&#34;在所有上述节点中。

foreach ($parent->children() as $child){
  $child= "New Value"; // Proper way to access $child's value without overwriting the entire object???
}

提前致谢!

编辑:我知道您可以简单地执行以下操作:

$parent->Unit = "New Value"; 

我特意询问使用children()方法的情况,如何访问当前子对象的值?

2 个答案:

答案 0 :(得分:0)

如果您没有提前知道节点名称,可以尝试:

foreach ($parent->children() as $name => $child) {                                                                                                                                               
    $parent->{$name} = 'new value';
}

答案 1 :(得分:0)

SimpleXMLElement表示单个元素(而不是具有相同名称的元素集合)时,索引[0]可用作自引用。

写入该自引用使用可在其他上下文中使用的重载赋值来设置节点的文本内容。

因此,您正在寻找的代码非常简单:

foreach ($parent->children() as $child) {
    $child[0] = "New Value";
}