为什么我不能过滤属性值而不是索引?
这样的事情失败了。
foreach ($portfolio->clientGroup[$id]->client['name=foo']->src as $src) {
echo $src . '<br />';
}
但这很有效。
foreach ($portfolio->clientGroup[$id]->client[0]->src as $src) {
echo $src . '<br />';
}
答案 0 :(得分:2)
这不起作用,因为SimpleXML是一个轻量级的实现。另外,除非您有规范,否则不能假设任何工作。
您正在寻找SimpleXMLElement
个foreach ($portfolio->clientGroup[$id]->xpath("client[@name='foo']/src") as $src) {
echo $src . '<br />';
}
个对象,即:
{{1}}
答案 1 :(得分:1)
SimpleXML以嵌套数组的形式提供对文档的访问。无法将XPath表达式作为数组索引。
尝试类似:
$query = "client[@name='foo']/src"; // if name is an attribute
$query = "client[name='foo']/src"; // if name is a child element
foreach ($portfolio->clientGroup[$id]->xpath($query) as $src ) {
echo $src . '<br />';
}