通常,我会有一个数组来保存一组值,每个值我都需要处理。有时,数组仅保存单个集合,在这种情况下,每个值都需要经过该过程。其他时候,数组将保存许多集合,在这种情况下,每个值都将是一个数组,并且这些数组中的每个值都需要进行处理。这是一个例子:
foreach($array as $key => $value) {
if(is_array($value)) {
foreach($value as $subkey => $subvalue) {
//Process $subvalue here
}
}
else {
//Process $value here
}
}
问题是处理 $value/$subvalue 的代码是相同的,只是它操作的是不同的变量。简化此操作的一种方法是将代码放入函数中,但必须调用它两次似乎仍然不优雅。此外,这会在该函数之外留下大量代码(foreach 循环和数组测试)。例如,假设该过程是验证,那么每当我想调用验证函数时,我不想编写两个 foreach 循环和一个数组测试。
有更简单的方法吗?
您可以使用RecursiveArrayIterator http://de.php.net/manual/en/class.recursivearrayiterator.php迭代数组中的值,例如
$iterator = new RecursiveIteratorIterator(
new RecursiveArrayIterator($yourArray),
RecursiveIteratorIterator:SELF_FIRST);
然后就foreach
超过它。进一步阅读:
- http://www.phpro.org/tutorials/Introduction-to-SPL.html#7 http://www.phpro.org/tutorials/Introduction-to-SPL.html#7
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)