Php 为simplexmlements数组编写foreach循环
我使用PHP5中的XPath解析XML文档。我遇到的问题是编写Php 为simplexmlements数组编写foreach循环,php,multidimensional-array,simplexml,Php,Multidimensional Array,Simplexml,我使用PHP5中的XPath解析XML文档。我遇到的问题是编写foreach以正确显示以下数组: XML文档示例 值1 价值2 //$row的var_转储提供了以下内容 理想情况下,我希望通过使用$row['file']或$row['folder']获得值。谢谢您的帮助。如果我正确理解了您的示例 foreach ($array as $row) { // do something with $row['file'] or $row['folder'] } 数组中的项是SimpleX
foreach
以正确显示以下数组:
XML文档示例
值1
价值2
//$row的var_转储提供了以下内容
理想情况下,我希望通过使用
$row['file']
或$row['folder']
获得值。谢谢您的帮助。如果我正确理解了您的示例
foreach ($array as $row)
{
// do something with $row['file'] or $row['folder']
}
数组中的项是SimpleXMLElement对象。您可以使用
$object->property
语法访问它们的属性。所以试试这个:
foreach ($array as $row) {
echo $row->folder . $row->file;
}
如果只想处理一个元素,则不一定需要循环,但也不会有任何影响。
根据您的输出
文件
和文件夹
是为xpath查询返回的元素的子元素。您可以通过$parentElement->childElement
访问它们。如果它们是属性,您将使用$element['attributeName']
$foo = new SimpleXMLElement(getData());
foreach( $foo->xpath('row[@id="r2"]') as $row ) {
echo $row->file, " | ", $row->folder, "\n";
}
echo "-----\n";
// same thing if you have more than one element in your result set
foreach( $foo->xpath('row[@id="r2" or @id="r3"]') as $row ) {
echo $row->file, " | ", $row->folder, "\n";
}
function getData() {
return '<foo>
<row id="r1">
<file>value 1.1</file>
<folder>value 1.2</folder>
</row>
<row id="r2">
<file>value 2.1</file>
<folder>value 2.2</folder>
</row>
<row id="r3">
<file>value 3.1</file>
<folder>value 3.2</folder>
</row>
</foo>';
}
@mjames,这个作业有关系吗?实际上是为了我正在创作的一个剧本。酷。。。只是检查一下,标题似乎有点“家庭作业”的味道。我实际上有一个不同的标题,但被版主更改了:)谢谢,我没有意识到我必须在对象窗体->文件而不是['file]中使用它。现在效果很好:)
foreach ($array as $row) {
echo $row->folder . $row->file;
}
$foo = new SimpleXMLElement(getData());
foreach( $foo->xpath('row[@id="r2"]') as $row ) {
echo $row->file, " | ", $row->folder, "\n";
}
echo "-----\n";
// same thing if you have more than one element in your result set
foreach( $foo->xpath('row[@id="r2" or @id="r3"]') as $row ) {
echo $row->file, " | ", $row->folder, "\n";
}
function getData() {
return '<foo>
<row id="r1">
<file>value 1.1</file>
<folder>value 1.2</folder>
</row>
<row id="r2">
<file>value 2.1</file>
<folder>value 2.2</folder>
</row>
<row id="r3">
<file>value 3.1</file>
<folder>value 3.2</folder>
</row>
</foo>';
}
value 2.1 | value 2.2
-----
value 2.1 | value 2.2
value 3.1 | value 3.2