我有跟随php对象转储的问题。我试着检查"价格"是一个数组,PHP返回我总是假的。数组的 var_dump()"价格"返回我的第一个数组元素而不是整个数组。哪个错了?如何检查它是否是一个数组?
object(SimpleXMLElement)#197 (1) {
["price"]=> array(4) {
[0]=> object(SimpleXMLElement)#156 (4) {
["room_id"]=> string(4) "1755"
["room_seq"]=> string(1) "1"
["offer_id"]=> string(4) "5842"
["price_total"]=> object(SimpleXMLElement)#205 (2) {
["price_typ"]=> string(1) "0"
["price_hb"]=> string(4) "2450"
}
}
[1]=> object(SimpleXMLElement)#143 (4) {
["room_id"]=> string(5) "24206"
["room_seq"]=> string(1) "1"
["offer_id"]=> string(4) "5842"
["price_total"]=> object(SimpleXMLElement)#205 (2) {
["price_typ"]=> string(1) "0"
["price_hb"]=> string(4) "2450"
}
}
[2]=> object(SimpleXMLElement)#135 (4) {
["room_id"]=> string(4) "1755"
["room_seq"]=> string(1) "1"
["offer_id"]=> string(6) "415725"
["price_total"]=> object(SimpleXMLElement)#205 (2) {
["price_typ"]=> string(1) "0"
["price_hb"]=> string(6) "2327.5"
}
}
[3]=> object(SimpleXMLElement)#136 (4) {
["room_id"]=> string(5) "24206"
["room_seq"]=> string(1) "1"
["offer_id"]=> string(6) "415725"
["price_total"]=> object(SimpleXMLElement)#205 (2) {
["price_typ"]=> string(1) "0"
["price_hb"]=> string(6) "2327.5"
}
}
}
}
答案 0 :(得分:1)
考虑一个简化的例子:
<root>
<element>first</element>
<element>second</element>
<element>third</element>
</root>
$root->element
实际上并不是一个数组。它是SimpleXMLElement
个对象。您可以将其视为选择器,可以使用foreach
遍历的元素集合,还可以使用索引访问特定对象:
$root->element[0]; //first object
$root->element[1]; //second
$root->element[2]; //third
以下是基本用法的更多示例:http://php.net/manual/en/simplexml.examples-basic.php
<小时/> 所以真正的问题是:如何定义集合中是否有多个元素?
您可以使用count()
方法执行此操作:
if($es->result->hotel->channel->room_price->price->count() > 1){
echo 'many elements';
}
答案 1 :(得分:0)
// simplexml_load_string() return false if not $XML
$xml = simplexml_load_string($pSdata);
if(gettype($xml)=='object')
{
print_r(simplexmlArray($xml));
} else {
echo "no xml input";
}
// simplexml_load $xml obj to array
function simplexmlArray ( $xmlObject, $out = array () )
{
foreach ( (array) $xmlObject as $index => $node )
$out[$index] = ( is_object ( $node ) ) ? simplexmlArray ( $node ) : $node;
return $out;
}