gpt4 book ai didi

php - 递归地倍数 foreach 或 RecursiveIteratorIterator

转载 作者:搜寻专家 更新时间:2023-10-31 21:09:21 25 4
gpt4 key购买 nike

我正在使用这段代码,效果很好。然而,由于 foreach 的倍数,这似乎不是最佳选择。

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 进行一些操作。我的问题是在第二个选项中很难生成完全相同的结构。无论如何,任何优化都会很好。

最佳答案

您是否尝试过 RecursiveIteratorIterator::__construct 上的 mode 参数的任何其他常量?默认为 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);

关于php - 递归地倍数 foreach 或 RecursiveIteratorIterator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24634439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com