我正在使用此代码,效果很好。然而,由于多次预测,似乎不是最好的选择。
foreach ($arr_items as $key => $value) {
$id_user = $key;
foreach ($value as $k => $v) {
foreach ($v as $x => $y) {
$id_transacao = $y['id_transacao'];
$id_duplicated = $y['id_duplicated'];
foreach ($y as $g => $b) {
if (is_array($b)){
foreach ($b as $kn => $l) {
var_dump($id_user);
var_dump($id_transacao);
var_dump($id_duplicated);
var_dump($l);
}
}
}
}
}
}
此代码将输出一堆结果,可能很快,但完全无序。
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($arr_items));
}
我的问题是:如果我使用第一个代码就可以了,或者我应该尝试使用RecursiveIteratorIterator
。我的问题是难以在第二个选项中生成完全相同的结构。
无论如何,任何优化都会很好。
答案 0 :(得分:1)
您是否在mode
上尝试了RecursiveIteratorIterator::__construct
参数的任何其他常量?默认值为RecursiveIteratorIterator::LEAVES_ONLY
。
来自Docs
RecursiveIteratorIterator::LEAVES_ONLY - The default. Lists only leaves in iteration.
RecursiveIteratorIterator::SELF_FIRST - Lists leaves and parents in iteration with parents coming first.
RecursiveIteratorIterator::CHILD_FIRST - Lists leaves and parents in iteration with leaves coming first.
也许SELF_FIRST
就是您所需要的。
$iterator = new RecursiveIteratorIterator(
new RecursiveArrayIterator($arr_items),
RecursiveIteratorIterator::SELF_FIRST);
答案 1 :(得分:1)
与foreach循环中的RecursiveIteratorIterator
一起,您可以使用$filter->getDepth()
函数来分隔子,自我和孙子。
您也可以设置$filter->setMaxDepth(int $depth);
。