note 130291 added to recursiveiteratoriterator.getsubiterator
| From: | 2317216477@qq.com | Date: | Tue, 13 May 2025 07:02:55 +0000 |
| Subject: | note 130291 added to recursiveiteratoriterator.getsubiterator | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-222138@lists.php.net to get a copy of this message | ||
$testArray = [
'a' => [
'b' => [
'c' => 1
],
'd' => [
'e' => [
'f' => 2
]
]
]
];
$modes = [
'LEAVES_ONLY' => \RecursiveIteratorIterator::LEAVES_ONLY,
'SELF_FIRST' => \RecursiveIteratorIterator::SELF_FIRST,
'CHILD_FIRST' => \RecursiveIteratorIterator::CHILD_FIRST
];
function logIteratorTraversal(\RecursiveIteratorIterator $iterator, string $modeName)
{
$maxDepth = 0;
$log = [];
foreach ($iterator as $key => $value) {
$currentDepth = $iterator->getDepth();
$maxDepth = max($maxDepth, $currentDepth);
// æå»ºè·¯å¾
$path = [];
for ($i = 0; $i <= $currentDepth; $i++) {
$sub = $iterator->getSubIterator($i);
$path[] = $sub->key();
}
$log[] = sprintf(
"模å¼: %-11s | å½å深度: %d | è·¯å¾: %-16s |
ç±»å: %s",
$modeName,
$currentDepth,
implode('â', $path),
is_array($value) ? 'éå¶åèç¹' :
'å¶åèç¹'
);
}
echo "=== {$modeName} 模å¼éåæ¥å¿ ===\n";
echo implode("\n", $log);
echo "\næå¤§å®é
深度ï¼" . ($maxDepth + 1) .
"\n\n";
}
foreach ($modes as $name => $mode) {
$iterator = new \RecursiveIteratorIterator(
new \RecursiveArrayIterator($testArray),
$mode,
\RecursiveIteratorIterator::CATCH_GET_CHILD
);
logIteratorTraversal($iterator, $name);
}
=== LEAVES_ONLY 模å¼éåæ¥å¿ ===
模å¼: LEAVES_ONLY | å½å深度: 2 | è·¯å¾: aâbâc |
ç±»å: å¶åèç¹
模å¼: LEAVES_ONLY | å½å深度: 3 | è·¯å¾: aâdâeâf |
ç±»å: å¶åèç¹
æå¤§å®é
深度ï¼4
=== SELF_FIRST 模å¼éåæ¥å¿ ===
模å¼: SELF_FIRST | å½å深度: 0 | è·¯å¾: a |
ç±»å: éå¶åèç¹
模å¼: SELF_FIRST | å½å深度: 1 | è·¯å¾: aâb |
ç±»å: éå¶åèç¹
模å¼: SELF_FIRST | å½å深度: 2 | è·¯å¾: aâbâc |
ç±»å: å¶åèç¹
模å¼: SELF_FIRST | å½å深度: 1 | è·¯å¾: aâd |
ç±»å: éå¶åèç¹
模å¼: SELF_FIRST | å½å深度: 2 | è·¯å¾: aâdâe |
ç±»å: éå¶åèç¹
模å¼: SELF_FIRST | å½å深度: 3 | è·¯å¾: aâdâeâf |
ç±»å: å¶åèç¹
æå¤§å®é
深度ï¼4
=== CHILD_FIRST 模å¼éåæ¥å¿ ===
模å¼: CHILD_FIRST | å½å深度: 2 | è·¯å¾: aâbâc |
ç±»å: å¶åèç¹
模å¼: CHILD_FIRST | å½å深度: 1 | è·¯å¾: aâb |
ç±»å: éå¶åèç¹
模å¼: CHILD_FIRST | å½å深度: 3 | è·¯å¾: aâdâeâf |
ç±»å: å¶åèç¹
模å¼: CHILD_FIRST | å½å深度: 2 | è·¯å¾: aâdâe |
ç±»å: éå¶åèç¹
模å¼: CHILD_FIRST | å½å深度: 1 | è·¯å¾: aâd |
ç±»å: éå¶åèç¹
模å¼: CHILD_FIRST | å½å深度: 0 | è·¯å¾: a |
ç±»å: éå¶åèç¹
æå¤§å®é
深度ï¼4
----
Server IP: 45.112.84.4
Probable Submitter: 80.90.5.137 (proxied: 39.166.18.151)
----
Manual Page -- https://php.net/manual/en/recursiveiteratoriterator.getsubiterator.php
Edit -- https://main.php.net/note/edit/130291
Del: integrated -- https://main.php.net/note/delete/130291/integrated
Del: useless -- https://main.php.net/note/delete/130291/useless
Del: bad code -- https://main.php.net/note/delete/130291/bad+code
Del: spam -- https://main.php.net/note/delete/130291/spam
Del: non-english -- https://main.php.net/note/delete/130291/non-english
Del: in docs -- https://main.php.net/note/delete/130291/in+docs
Del: other reasons-- https://main.php.net/note/delete/130291
Reject -- https://main.php.net/note/reject/130291
Search -- https://main.php.net/manage/user-notes.php