为什么不允许这样做? (我在password
)收到语法错误:
->length
根据http://php.net/manual/en/language.operators.assignment.php,赋值表达式的值是指定的值,但在分配xpath->查询的结果时它似乎不起作用。
我想在while循环中使用表达式,我在其中分配查询结果并在一步中检查零长度:
($x=$xpath->query($s))->length
答案 0 :(得分:0)
我不是一个PHP专家,但从我观察到的,它是括号和对象操作符(->
)的组合,触发了错误。赋值表达式本身正确地返回DOMNodeList
的实例,正如我们所期望的那样给出了链接文档:
$xml = "<person><name>John-Doe</name></person>";
$doc = new DOMDocument();
$doc->loadXML($xml);
$xpath = new DOMXpath($doc);
$test = ($x = $xpath->query("/person/foo"));
//$test contains instance of `DOMNodeList` on which we can use `->` to get the length
echo $test->length;
//but using `->` on parentheses triggers the initial error :
echo ($test)->length;
要实现实际目标,您可以使用普通for
循环,这样可以更灵活地控制循环,而不是使用while
。以下代码片段的内容:
for($x=$xpath->query($s);
$x->length;
$x=$xpath->query($s))
{
//do something with $x
}
我假设 $xpath->query($s)
结果在下一次迭代中以$x->length
值减小的方式发生变化,以便循环最终终止。