Php 以递归方式或递归迭代器对每个对象进行乘法
我正在使用这个代码,它工作得很好。然而,似乎不是最好的选择,因为每个人都有倍数Php 以递归方式或递归迭代器对每个对象进行乘法,php,arrays,loops,foreach,spl,Php,Arrays,Loops,Foreach,Spl,我正在使用这个代码,它工作得很好。然而,似乎不是最好的选择,因为每个人都有倍数 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_dupli
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));
}
我的问题是:如果我使用第一个代码,或者我应该尝试使用递归迭代器
。我的问题是,在第二个选项中很难生成完全相同的结构。
无论如何,任何优化都会很好。您是否尝试过
递归迭代器::\u construct
上的模式
参数的任何其他常量?默认值是递归迭代器::只剩下
从
也许你首先需要的是SELF\u
$iterator = new RecursiveIteratorIterator(
new RecursiveArrayIterator($arr_items),
RecursiveIteratorIterator::SELF_FIRST);
除了foreach循环中的
recursiveiterator
之外,您还可以使用$filter->getDepth()
函数来分离子循环、自循环和孙循环
您还可以设置
$filter->setMaxDepth(int$depth)代码>你所说的“完全无序”是什么意思?@ClémentMalet基本上,结果是在同一级别上按顺序呈现的。所以,我想我会松开深度参考。你实际上是在尝试遍历一棵树。列出并解释可能的遍历顺序的类型。你应该阅读这篇文章,以便能够更具体地解释你的期望。你能发布$arr_items
?
$iterator = new RecursiveIteratorIterator(
new RecursiveArrayIterator($arr_items),
RecursiveIteratorIterator::SELF_FIRST);