首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >foreach和simplexml

foreach和simplexml
EN

Stack Overflow用户
提问于 2012-08-28 07:31:54
回答 5查看 10.6K关注 0票数 2

这是我的xml文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8" ?> 
<documentElement>
    <rows>
        <row>
            <column>1</column>
            <column>David</column>
            <column>Johnson</column>
        </row>
        <row>
            <column>2</column>
            <column>Jack</column>
            <column>Nixon</column>
        </row>
    </rows>
</documentElement>

我想循环遍历各行并将它们添加到一个数组中。我将其传递给simplexml,然后循环遍历这些对象,但无法做到:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$xml->rows
$xml->rows->row
$xml->row
$xml->column

我该怎么办?

谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-08-28 07:42:29

这实际上是一个更基本的例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$sxml = simplexml_load_string($xml);

foreach($sxml->rows->row as $name => $row)
{
    echo $name, ': ', var_dump($row);
}

这将为您提供以下输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
row: object(SimpleXMLElement)#3 (1) {
  ["column"]=>
  array(3) {
    [0]=>
    string(1) "1"
    [1]=>
    string(5) "David"
    [2]=>
    string(7) "Johnson"
  }
}
row: object(SimpleXMLElement)#5 (1) {
  ["column"]=>
  array(3) {
    [0]=>
    string(1) "2"
    [1]=>
    string(4) "Jack"
    [2]=>
    string(5) "Nixon"
  }

你可以在这里找到一个在线演示:http://codepad.org/CYyQhvnM

你应该看看手册中的简单示例部分,它有一些非常有洞察力的例子,在这里比我的更深入地解释:

无论如何,我希望答案是有帮助的。相关问题包括:

票数 6
EN

Stack Overflow用户

发布于 2012-08-28 07:45:09

如果您更习惯使用数组,还可以将简单的xml转换为数组:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
$xml = simplexml_load_file('./your.xml');
$json = json_encode($xml);
$array = json_decode($json,TRUE);
print_r($array);
/**
 *Array
(
    [rows] => Array
        (
            [row] => Array
                (
                    [0] => Array
                        (
                            [column] => Array
                                (
                                    [0] => 1
                                    [1] => David
                                    [2] => Johnson
                                )

                        )

                    [1] => Array
                        (
                            [column] => Array
                                (
                                    [0] => 2
                                    [1] => Jack
                                    [2] => Nixon
                                )

                        )

                )

        )

)
 */

foreach($array['rows']['row'] as $row){
    echo 'Id:'.$row['column'][0],
         ' Firstname:'.$row['column'][1],
         ' Lastname:'.$row['column'][2].'<br />'.PHP_EOL;
}

/*Result
Id:1 Firstname:David Lastname:Johnson<br />
Id:2 Firstname:Jack Lastname:Nixon<br />
*/
?>

或者是hakra的一个更简洁的例子

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
$xml = simplexml_load_file('./test.xml');
$rows = json_decode(json_encode(iterator_to_array($xml->rows->row, 0)), 1);
print_r($rows);
/**
 *
Array
(
    [0] => Array
        (
            [column] => Array
                (
                    [0] => 1
                    [1] => David
                    [2] => Johnson
                )

        )

    [1] => Array
        (
            [column] => Array
                (
                    [0] => 2
                    [1] => Jack
                    [2] => Nixon
                )

        )

)
 */

foreach($rows as $row){
    echo 'Id:'.$row['column'][0],
         ' Firstname:'.$row['column'][1],
         ' Lastname:'.$row['column'][2].'<br />'.PHP_EOL;
}
票数 4
EN

Stack Overflow用户

发布于 2012-08-28 07:38:08

试试$xml->rows[0]->row[0]

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12154689

复制
相关文章
for和foreach循环语句
今天我们来讲解一下 for跟foreach 一、for 是一个循环语句 for break continue 从 i=0开始,到i=10结束,每次循环 for (i = 1; i <= 10; echo $i; } for (i = 10; i >0; echo $i; } //for可以嵌套 for (i = 1; i <= 10; for (j = 1; j <= 10; continue; echo i.j; } if($i==5) bre
老雷PHP全栈开发
2020/07/02
2.9K0
js forEach和 map 区别
forEach() 方法按升序为数组中含有效值的每一项执行一次 callbackFn 函数,那些已删除或者未初始化的项将被跳过(例如在稀疏数组上,见下方的示例)。
蓓蕾心晴
2022/12/06
4.6K0
迭代器和foreach原理。
迭代器是一种设计模式,它的定义为:提供一种方法访问一个容器对象中的各个元素,而又不需暴露该容器对象的内部细节。迭代器模式,就是为容器而生。
崔笑颜
2020/07/23
8410
javascript 数组遍历forEach和for用法
前言:前端开发过程中,常用到数组的遍历,我们通常采用的方式有forEach和for。下面介绍这两种方式的使用方法
侠客冷展堂
2022/01/19
1.1K0
javascript 数组遍历forEach和for用法
PHP中遍历XML之SimpleXML
  简单来讲述一些XML吧,XML是可扩展标记语言,是一种用于标记电子文件使其具有结构性的标记语言。XML是当今用于传输数据的两大工具之一,另外一个是json。
那一叶随风
2018/08/22
2.3K1
PHP中遍历XML之SimpleXML
.net Parallel.Foreach的Continue和Break和Return;
var parallelOption = new ParallelOptions() { MaxDegreeOfParallelism = 6 };
全栈程序员站长
2022/09/09
8840
c# 中for和foreach循环的区别
    (2)效率比for要高(C#是强类型检查,for循环对于数组访问的时候,要对索引的有效值进行检查)
vv彭
2020/10/27
4.9K0
c# 中for和foreach循环的区别
Java list foreach_java的foreach
从源码中可以看到:forEach()方法是Iterable<T>接口中的一个方法。Java容器中,所有的Collection子类(List、Set)会实现Iteratable接口以实现foreach功能。forEach()方法里面有个Consumer类型,它是Java8新增的一个消费型函数式接口,其中的accept(T t)方法代表了接受一个输入参数并且无返回的操作。
全栈程序员站长
2022/11/09
1.6K0
C# 多线程 Parallel.ForEach 和 ForEach 效率问题研究及理解
最近要做一个大数据dataTable循环操作,开始发现 运用foreach,进行大数据循环,并做了一些逻辑处理。在循环中耗费的时间过长。后来换成使用Parallel.ForEach来进行循环。 一开始认为, 数据比较大时,Parallel.ForEach肯定比 ForEach效率高,后来发现,其实并不是这样。
全栈程序员站长
2022/09/09
1.2K0
C# 多线程 Parallel.ForEach 和 ForEach 效率问题研究及理解
java退出foreach循环_forEach方法如何跳出循环[通俗易懂]
3.1 foreach()不能使用break和continue这两个关键字,foreach和普通的for循环是不同的,它不是普通的遍历,实现continue的效果可以直接使用return。
全栈程序员站长
2022/09/01
15K0
mysql foreach
把集合都封装进map中,比如这里的list1,list2,都加入到集合中,key 为list1,list2,然后按照如下方式取出,collection 属性中为放入map时的key
IT云清
2019/01/22
2.7K0
forEach、for...in 、 for...of
写法简单了许多,但是有缺点:不能中断循环(使用break语句或使用return语句)。
用户3258338
2020/06/02
1.3K0
forEach、for...in 、 for...of
foreach rf
library(randomForest) library(foreach) library(cvTools) set.seed(1234) K =10 R = 3 cv <- cvFolds(NROW(iris),K=K,R=R) grid <- expand.grid(ntree=c(10,100,200),mtry=c(3,4)) result <- foreach(g=1:NROW(grid),.combine = rbind) %do% { foreach(r=1:R,.combine = r
用户1359560
2018/08/27
1.1K0
PHP解析Xml:SimpleXML类学习笔记
SimpleXML 是 PHP 5 中的新特性。SimpleXML 扩展提供了一种获取 XML 元素的名称和文本的简单方式。与 DOM 或 Expat 解析器相比,SimpleXML 仅仅用几行代码就可以从 XML 元素中读取文本数据。SimpleXML 可把 XML 文档(或 XML 字符串)转换为对像;
房东的狗丶
2023/02/17
9730
Parallel.For循环 和 Parallel.ForEach循环
但是,有的时候又不是这样。如果迭代之间彼此独立,并且程序运行在多核处理器的机器上,如果能将不同的迭代放在不同的处理器上并行处理的话,将会受益匪浅。Parallel.For 和 Parallel.ForEach结构就是这样做的。
全栈程序员站长
2022/09/09
2.7K0
Parallel.For循环 和 Parallel.ForEach循环
Java 中for循环和foreach循环哪个更快?
在Java编程中,循环结构是程序员常用的控制流程,而for循环和foreach循环是其中比较常见的两种形式。关于它们哪一个更快的讨论一直存在。本文旨在探究Java中的for循环和foreach循环的性能差异,并帮助读者更好地选择适合自身需求的循环方式。通过详细比较它们的遍历效率、数据结构适用性和编译器优化等因素,我们将为大家揭示它们的差异和适用场景,以便您能够做出更明智的编程决策。
葡萄城控件
2023/10/16
6300
Java 中for循环和foreach循环哪个更快?
JavaScript编程趋势:用map和filter替换forEach
当你需要拷贝一个数组的全部或者部分到一个新数组的时候,优先使用map和filter而不是forEach。
一墨编程学习
2018/10/22
1.7K0
点击加载更多

相似问题

SimpleXML和foreach

08

SimpleXML和foreach错误

21

PHP、simplexml和foreach

16

php simplexml foreach和while循环

10

PHP SimpleXML ForEach

15
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文