XPATH - 获取返回的单个值而不是数组 php
我在 PHP 中使用 Xpath - 我知道我的查询将返回 0 或 1 个结果。
如果返回 1 个结果,我不希望它作为数组 - 这就是现在返回的结果。我只是想要该值,而不必访问结果的 [0]
元素并转换为字符串。
这可能吗?
I am using Xpath in PHP - I know that my query will return either 0 or 1 results.
If 1 result is returned I do not want it as an array - which is what is returned right now. I simply want the value without having to access the [0]
element of the result and cast to a string.
Is this possible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
这可以通过 XPath 的
string
函数和 DOMXPath 的
evaluate
方法:示例:
您可以使用
位置
函数:示例:
或缩写语法
请注意当使用 // 查询后代时,由于表达式的求值方式,使用位置函数可能会产生多个结果。
That is possible with XPath's
string
functionand DOMXPath's
evaluate
method:Example:
You can use the
position
function:Example:
or the abbreviated syntax
Note that when querying for descendants with // using the position function might yield multiple result due to the way the expression is evaluated.
使用'evaluate'而不是'query',您可以执行诸如转换之类的操作。
DOMXPath::evaluate()
另外,如果您只是对这样做感到恼火很多时候,只需编写一个函数来完成它......这就是函数背后的整个思想,对吧?
Using 'evaluate' instead of 'query', you can do things like casting.
DOMXPath::evaluate()
Also, if you're just annoyed with doing stuff a lot of times, just write a function that does it ... that is the whole idea behind functions, right?
大概
?
如果
$array[0]
是一个数组,您可以将字符串重命名为 new_arrayprobably
?
if
$array[0]
is an array, you can rename string to new_array您的问题表明您正在使用
SimpleXML
因为您谈论的是数组。然而很久以前,您接受了一个用DOMDocument
给出答案的答案。无论如何,其他用户都去这里寻找 SimpleXML 中的解决方案,它的工作方式略有不同:$first
中的元素如果不是NULL
(对于没有元素)那么仍然是SimpleXMLElement
类型(元素节点或属性节点,具体取决于 xpath 查询),但是您可以将其转换为 PHP 中的字符串并完成,或者您只需使用它在字符串上下文中,就像回显
:Your question suggests that you are using
SimpleXML
because you talk about an array. However long-time ago you accepted an answer giving an answer withDOMDocument
. In any case other users go here looking for a solution in SimpleXML it works a little differently:The element in
$first
if notNULL
(for no elements) then still will be of typeSimpleXMLElement
(either an element node or an attribute node depending on the xpath query), however you can just cast it to string in PHP and done or you just use it in string context, like withecho
:您可以像这样最简单地编写它:
@
运算符 将抑制错误,如果$array
为空,则使$string
为空。You can write it most simply like this:
The
@
operator will suppress errors, making$string
null if$array
is empty.