如何从 simplexml_load_file 的 PHP 对象输出中获取索引值
how get indexed value from PHP object output of simplexml_load_file
从下面的输出 1 我们可以看到 PHP simplexml_load_file
翻译了与索引数组 [0,1,2,3,4]
.
相同的 index
标签
我想知道如何从 simplexml_load_file
的输出中获取索引?我厌倦了用示例 'php2' 来做到这一点,我在 return 中得到了 'output2'。是否有可能或如何获得如 'desired output2' 所示的输出?提前谢谢你
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
简单 XML 使用起来很痛苦:
$oFile = simplexml_load_file("test.xml");
foreach($oFile->xpath("index") as $key => $value) {
echo "{$key}: {$value->value}<br>";
}
你可以只用计数器来获得钥匙...
$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
)
当您要求更优雅的方式并且您说您需要 xpath 时,这与公认的答案基本相同,但 w/o 抱怨并将其用于利益:
foreach ($oFile->xpath('*/value') as $key => $value) {
echo $key, ': ', $value, "\n";
}
如果您仍然使用 xpath,它确实已经将结果转换为 SimpleXMLElements 数组 - 零索引。
另外直接查询您感兴趣的节点带来的好处是通过回显(将其转换为字符串)将它们的文本内容实际转换为字符串:
0: h
1: e
2: l
3: l
4: o
希望这对目前的答案有所帮助。
从下面的输出 1 我们可以看到 PHP simplexml_load_file
翻译了与索引数组 [0,1,2,3,4]
.
index
标签
我想知道如何从 simplexml_load_file
的输出中获取索引?我厌倦了用示例 'php2' 来做到这一点,我在 return 中得到了 'output2'。是否有可能或如何获得如 'desired output2' 所示的输出?提前谢谢你
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
简单 XML 使用起来很痛苦:
$oFile = simplexml_load_file("test.xml");
foreach($oFile->xpath("index") as $key => $value) {
echo "{$key}: {$value->value}<br>";
}
你可以只用计数器来获得钥匙...
$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
)
当您要求更优雅的方式并且您说您需要 xpath 时,这与公认的答案基本相同,但 w/o 抱怨并将其用于利益:
foreach ($oFile->xpath('*/value') as $key => $value) {
echo $key, ': ', $value, "\n";
}
如果您仍然使用 xpath,它确实已经将结果转换为 SimpleXMLElements 数组 - 零索引。
另外直接查询您感兴趣的节点带来的好处是通过回显(将其转换为字符串)将它们的文本内容实际转换为字符串:
0: h
1: e
2: l
3: l
4: o
希望这对目前的答案有所帮助。