পিএইচপিতে রিকার্শন এবং মাল্টিডাইমেনশনাল স্ট্রাকচার
একটি মাল্টিডাইমেনশনাল অ্যারে দেওয়া আছে যার নেস্টিং লেভেল নির্বিচারে, উদাহরণস্বরূপ, এইরকম:
<?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]]];
?>
রিকার্শন ব্যবহার করে এই অ্যারের的所有 আদিম উপাদানগুলি স্ক্রিনে প্রদর্শন করুন।