<?php
$myArray = array(
0 => 'a',
1 => array('subA','subB',array(0 => 'subsubA', 1 => 'subsubB', 2 => array(0 => 'deepA', 1 => 'deepB'))),
2 => 'b',
3 => array('subA','subB','subC'),
4 => 'c'
); //从这里开始改为类的一个方法
$iterator = new RecursiveArrayIterator($myArray);
iterator_apply($iterator, 'traverseStructure', array($iterator)); function traverseStructure($iterator) {
while ( $iterator -> valid() ) { if ( $iterator -> hasChildren() ) {
traverseStructure($iterator -> getChildren());
}
else {
echo $iterator -> key() . ' : ' . $iterator -> current() .PHP_EOL;
} $iterator -> next();
}
}
?>
基础不够扎实……递归脑筋打结了
解决方案 »
- php如何采集网页内容,正则表达式怎么用
- 在双引号中直接使用php变量的问题
- 关于PHP连接数据库的一个问题
- 求一个门户的开源项目
- 问下关于PHP的SESSION问题
- php5怎么错误信息不显示了?一些比如少分号 ; 等语法错误信息都不显示了,php.ini已经error_reporting(E_ALL ^ E_NOTICE);,在脚本页面中设
- mssql和excel表怎么样导入mysql?(急求)
- 求助高手!!!请问用php邮件发送中为什么图片作为table的背景图就不能转发呢?
- phplib 的模板中能不能使用数组啊???
- PHP如何向webservice发送xml请求
- 新手有几个小问题求助大家!
- 【php apache 诡异的问题】
traverseStructure($iterator -> getChildren());
===>
$this->traverseStructure($iterator -> getChildren());
ReturnType iterator_apply ( Traversable $iterator , callback $function [, array $args ] )
iterator_apply 就是对迭代器调用函数但写进类我就搞不清关系了,总是这样那样问题
iterator_apply($iterator, array($objname, 'traverseStructure'), array($iterator));
<?php
$myArray = array(
0 => 'a',
1 => array('subA','subB',array(0 => 'subsubA', 1 => 'subsubB', 2 => array(0 => 'deepA', 1 => 'deepB'))),
2 => 'b',
3 => array('subA','subB','subC'),
4 => 'c'
); class myclass
{
function method($myarray)
{
$iterator = new RecursiveArrayIterator($myArray);
iterator_apply($iterator, 'traverseStructure', array($iterator)); function traverseStructure($iterator) {
while ( $iterator -> valid() ) {
if ( $iterator -> hasChildren() ) {
traverseStructure($iterator -> getChildren());
} else {
echo $iterator -> key() . ' : ' . $iterator -> current() .PHP_EOL;
}
$iterator -> next();
}
}
?>
$obj=new myclass();
$obj->method($myArray);
还是常规的吧class myclass {
function method($myarray) {
$iterator = new RecursiveArrayIterator($myArray);
iterator_apply($iterator, array($this, 'traverseStructure'), array($iterator));
}
function traverseStructure($iterator) {
while ( $iterator -> valid() ) {
if ( $iterator -> hasChildren() ) {
$this->traverseStructure($iterator -> getChildren());
} else {
echo $iterator -> key() . ' : ' . $iterator -> current() .PHP_EOL;
}
$iterator -> next();
}
}
}