如何从simplexml_load_file的PHP对象输出获取索引值

问题描述 投票:1回答:2

从下面的output1中,我们可以看到PHP simplexml_load_file转换了与索引数组index相同的[0,1,2,3,4]标签。

我想找出如何从simplexml_load_file的输出中获取索引?我厌倦了使用示例'php2'来做到这一点,并且得到了'output2'作为回报​​。是否有可能或如何获得如“期望的输出2”所示的输出?预先谢谢你

test.xml:

<?xml version="1.0" encoding="utf-8"?>
<Report>
    <index><value>h</value></index>
    <index><value>e</value></index>
    <index><value>l</value></index>
    <index><value>l</value></index>
    <index><value>o</value></index>
</Report>

php1:

<?php
    $oFile = simplexml_load_file("test.xml") or die("error: Cannot create object");
    var_dump($oFile);
?>

输出1:

object(SimpleXMLElement)#1 (1) 
{ 
    ["index"]=> array(5) 
    { 
        [0]=> object(SimpleXMLElement)#2 (1) { ["value"]=> string(1) "h" } 
        [1]=> object(SimpleXMLElement)#3 (1) { ["value"]=> string(1) "e" } 
        [2]=> object(SimpleXMLElement)#4 (1) { ["value"]=> string(1) "l" } 
        [3]=> object(SimpleXMLElement)#5 (1) { ["value"]=> string(1) "l" } 
        [4]=> object(SimpleXMLElement)#6 (1) { ["value"]=> string(1) "o" } 
    } 
}

php2:

<?php
    $oFile = simplexml_load_file("test.xml") or die("error: Cannot create object");
    foreach ($oFile->index as $key=>$value) {
        echo $key.': '.$value->value.'<br>';
    }
?>

输出2:

index: h
index: e
index: l
index: l
index: o

所需的输出2:

0: h
1: e
2: l
3: l
4: o
php xml simplexml
2个回答
2
投票

简单的XML使用起来很痛苦:

$oFile = simplexml_load_file("test.xml");

foreach($oFile->xpath("index") as $key => $value) {
        echo "{$key}: {$value->value}<br>";
}

0
投票

您可以使用计数器来获取密钥...

$key = 0;
foreach ( $oFile->index as $index ) {
    echo ($key++)."=>".$index->value.PHP_EOL;
}

或者,如果您要进一步处理数据,则可以将其添加到数组中...

$data = [];
foreach ( $oFile->index as $index ) {
    $data[] = (string)$index->value;
}
print_r($data);

给出...

Array
(
    [0] => h
    [1] => e
    [2] => l
    [3] => l
    [4] => o
)
© www.soinside.com 2019 - 2024. All rights reserved.