gpt4 book ai didi

xml - 使用 xpath 获取 $variable 值时数组到字符串转换的注意事项

转载 作者:行者123 更新时间:2023-12-02 19:03:46 24 4
gpt4 key购买 nike

我正在尝试使用 xpath 获取以下提要中类型元素的名称属性。

<response request="getHierarchyByMarketType" code="001" 
message="success" debug="">
<jonny>
<class id="5" name="Formula 1" maxRepDate="2012-12-19" maxRepTime="15:03:34">
<type id="4558" name="F1 Championship" lastUpdateDate="2012-11-26"
lastUpdateTime="16:17:33">

为了做到这一点,我正在使用

$market_name = $wh_xml->xpath('/response/jonny/class/type/@name');

然后使用

<h2>
<?= $market_name ?>
</h2>

在我看来,但它没有返回我预期的“F1冠军”,而是得到了:

Array to string conversion

注意,但我不知道为什么,我认为 xpath 会以字符串形式返回 @name 的值?

最佳答案

simeplexml 中,xpath() 方法始终返回一个数组。因此,它不会返回字符串,并且您会看到警告,因为您使用该数组就像它是字符串一样(输出它)。当你在 PHP 中将数组转换为字符串时,你会收到通知,字符串是“Array”

您发现 PHP 手册中记录为 xpath() 方法返回类型:http://php.net/simplexmlelement.xpath以及 PHP manual about strings (scroll down/search the following) :

Arrays are always converted to the string "Array"; because of this, echo and print can not by themselves show the contents of an array. To view a single element, use a construction such as echo $arr['foo']. [...]

该规则的唯一异常(exception)是,如果您的 xpath 查询包含错误,则返回值将为 FALSE

因此,如果您要查找第一个元素,可以使用 list language construct (如果您的 xpath-query 没有任何语法错误并且返回至少一个节点):

list($market_name) = $wh_xml->xpath('/response/jonny/class/type/@name');
^^^^^^^^^^^^^^^^^^

如果您使用 PHP 5.4,您还可以直接访问第一个数组值:

$market_name = $wh_xml->xpath('/response/jonny/class/type/@name')[0];
^^^

关于xml - 使用 xpath 获取 $variable 值时数组到字符串转换的注意事项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16219060/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com