PHP में रिकर्सन और मल्टीडायमेंशनल स्ट्रक्चर
एक मल्टीडायमेंशनल ऐरे दी गई है जिसकी नेस्टिंग लेवल मनमाना है, उदाहरण के लिए, यह ऐसा है:
<?php
$arr = [
1,
[
2, 7, 8
],
[
3, 4, [5, [6, 7]],
]
];
?>
जैसा कि आप देख सकते हैं, इस ऐरे की एक जटिल संरचना है, और यह माना जाता है कि यह संरचना मनमानी हो सकती है और नेस्टिंग के स्तर कितनी भी गहरी हो सकते हैं।
मान लीजिए कि हम ऐरे के सभी आदिम (यानी, ऐरे नहीं) तत्वों को स्क्रीन पर प्रिंट करना चाहते हैं। इस स्थिति में, ऐसे ऐरे को ट्रैवर्स करने के लिए हम लूप्स का उपयोग नहीं कर पाएंगे, क्योंकि ऐरे की संरचना अनियमित है और नेस्टिंग का स्तर अज्ञात है।
हालाँकि, ऐसे ऐरे को ट्रैवर्स करने के लिए रिकर्सन का उपयोग करना बहुत सुविधाजनक होगा।
सबसे पहले, एक फ़ंक्शन बनाते हैं, जिसमें हम एक पैरामीटर के रूप में अपना ऐरे पास करेंगे, और फ़ंक्शन के अंदर ऐरे को ट्रैवर्स करने के लिए एक लूप बनाएंगे:
<?php
function func($arr) {
foreach ($arr as $elem) {
echo $elem;
}
}
func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);
?>
हमारे द्वारा बनाया गया लूप केवल मुख्य ऐरे के
तत्वों को ही ट्रैवर्स करेगा। यानी पहले
यह 1 आउटपुट करेगा, फिर [2, 7, 8],
और फिर [3, 4, [5, [6, 7]]।
आइए अब लूप में आदिम तत्वों और ऐरे तत्वों को अलग करते हैं:
<?php
function func($arr) {
foreach ($arr as $elem) {
if (is_array($elem)) {
// तत्व एक ऐरे है
} else {
// तत्व एक आदिम है
echo $elem;
}
}
}
func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);
?>
और अब ऐसा करते हैं कि यदि हमारा तत्व एक ऐरे है, तो फ़ंक्शन स्वयं को कॉल करे, इस ऐरे को पैरामीटर के रूप में पास करते हुए:
<?php
function func($arr) {
foreach ($arr as $elem) {
if (is_array($elem)) {
func($elem);
} else {
echo $elem;
}
}
}
func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);
?>
एक मल्टीडायमेंशनल ऐरे दिया गया है जिसकी नेस्टिंग लेवल मनमाना है, उदाहरण के लिए, यह ऐसा है:
<?php
$arr = [1, 2, 3, [4, 5, [6, 7]], [8, [9, 10]]];
?>
रिकर्सन का उपयोग करके इस ऐरे के सभी आदिम तत्वों को स्क्रीन पर प्रिंट करें।