Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 什么是「$ns";及$是“U前缀”;关于什么?_Php_Simplexml_Xml Namespaces - Fatal编程技术网

Php 什么是「$ns";及$是“U前缀”;关于什么?

Php 什么是「$ns";及$是“U前缀”;关于什么?,php,simplexml,xml-namespaces,Php,Simplexml,Xml Namespaces,和相关函数以及都有一对与XML名称空间相关的可选参数:$ns和$is\u prefix 尽管我可以看到它们与XML名称空间相关,但我想知道它们的用途和工作原理。根据PHP手册,这两个参数已添加到PHP 5.2版中。官方的PHP5变更日志没有明确说明这些变更,但是 然后查看构造函数()的5.2源代码,它表明这与迭代器有关: 因此,我假设这两个名称空间指定了默认情况下,simplexmlement将迭代的XML名称空间。一个小测试可以验证这一点: $xml = new SimpleXMLElemen

和相关函数以及都有一对与XML名称空间相关的可选参数:
$ns
$is\u prefix


尽管我可以看到它们与XML名称空间相关,但我想知道它们的用途和工作原理。

根据PHP手册,这两个参数已添加到PHP 5.2版中。官方的PHP5变更日志没有明确说明这些变更,但是

然后查看构造函数()的5.2源代码,它表明这与迭代器有关:

因此,我假设这两个名称空间指定了默认情况下,
simplexmlement
将迭代的XML名称空间。一个小测试可以验证这一点:

$xml = new SimpleXMLElement(
    '<root><a/><b/><c/></root>'
);

var_dump(count(iterator_to_array($xml))); #int(3)
如果子元素本身位于该参数对指定的命名空间中,并通过这些元素上的前缀,则相同:

$xml = new SimpleXMLElement(
    '<root xmlns:n="ns:1"><n:a/><n:b/><n:c/></root>', 0, FALSE, "ns:1"
);

var_dump(count(iterator_to_array($xml))); #int(3)
$xml=新的SimpleXMLElement(
'',0,错误,“ns:1”
);
var_dump(计数(迭代器到数组($xml))#int(3)

如果您将此答案放在php.net注释中,您会做得很好。因为没有办法知道。他们什么都没写。。。真正地
$xml = new SimpleXMLElement(
    '<root><a/><b/><c/></root>', 0, FALSE, "ns:1"
);

var_dump(count(iterator_to_array($xml))); #int(0)
$xml = new SimpleXMLElement(
    '<root xmlns="ns:1"><a/><b/><c/></root>', 0, FALSE, "ns:1"
);

var_dump(count(iterator_to_array($xml))); #int(3)
$xml = new SimpleXMLElement(
    '<root xmlns:n="ns:1"><n:a/><n:b/><n:c/></root>', 0, FALSE, "ns:1"
);

var_dump(count(iterator_to_array($xml))); #int(3)