Php 将单个变量与属性()进行比较的if条件的结果

Php 将单个变量与属性()进行比较的if条件的结果,php,xml,xls,Php,Xml,Xls,我试图从w3schools.com了解以下示例: 最让我困惑的一行是PHP代码: if($key == $x->attributes()) 我发现attributes()。上面的if语句显然只对属性名感兴趣。if语句是否为真,即使只有一个属性名等于$key 另一个附带问题。在相同的PHP代码中,有以下行 $xmlLoad->asXML($xml); 有人能解释一下为什么增加了后者吗?我并不奇怪,这个例子把你弄糊涂了。我希望我能澄清一点。您可能希望能够更好地解释以下步骤: $xml

我试图从w3schools.com了解以下示例:

最让我困惑的一行是PHP代码:

if($key == $x->attributes())
我发现
attributes()。上面的
if
语句显然只对属性名感兴趣。
if
语句是否为真,即使只有一个属性名等于
$key

另一个附带问题。在相同的PHP代码中,有以下行

$xmlLoad->asXML($xml);

有人能解释一下为什么增加了后者吗?

我并不奇怪,这个例子把你弄糊涂了。我希望我能澄清一点。您可能希望能够更好地解释以下步骤:
$xml
是xml文件的名称,而不是预期的字符串表示形式

function updateFile($xml) {
  $xmlLoad = simplexml_load_file($xml);
$postKeys
从未使用过。您可以忽略或删除该行

  $postKeys = array_keys($_POST);
children()
返回一个
simplexmlement
,但该类是可遍历的。也就是说,您可以“像数组一样”使用它(并非所有数组操作都是如此)

attributes()
返回另一个SimpleXMLElement,而不是字符串。多亏了,(==)和SimpleXMLElement的魔力
\uuu-toString()
,if才起作用

      if($key == $x->attributes()) { 
        $x->value = $value;
  }}} 
如果向其传递文件名,
asXML()
不会返回XML内容,而是将其写入文件。记住,`$xml是一个文件名。下一行再次读取该文件

  $xmlLoad->asXML($xml);
  loadFile($xml,"tool_updated.xsl");
}

不,对于每个属性匹配都是正确的,对于那些不匹配的属性都是错误的,它在一个foreach中循环,因为它谈论的是ASP,我想知道这个文档有多旧。不管是哪种方式,正如您所暗示的,针对属性的代码测试关键点看起来根本不正确。其中许多包含错误的不良做法信息。只要我的两分钱。
  $xmlLoad->asXML($xml);
  loadFile($xml,"tool_updated.xsl");
}