كيفية تنفيذ recursion في PHP؟
السلام عليكم! من فضلكم، أخبروني كيف يمكنني تنفيذ recursion بشكل صحيح في PHP. أكتب دالة لاجتياز مصفوفة متعددة الأبعاد وحساب جميع القيم، لكني أحصل إما على 0 أو حلقة لا نهائية.
إليكم ما جربته:
function recursiveSum($arr) {
static $sum = 0;
foreach ($arr as $value) {
if (is_array($value)) {
recursiveSum($value);
} else {
$sum += $value;
}
}
return $sum;
}
$data = [1, [2, 3], [4, [5, 6]]];
echo recursiveSum($data); // أتوقع: 21المشكلة أنه عند استدعاء الدالة عدة مرات بمصفوفات مختلفة، تتراكم النتيجة بسبب المتغير static. جربت أيضًا تمرير المجموع بالإشارة (&$sum)، لكن الدالة أعادت قيمًا غير متوقعة. الخيار الآخر باستخدام متغير عام غير مناسب أيضًا—فهو ينتهك مبادئ نقاء الكود.
أتوقع أن تعيد الدالة مجموع جميع الأرقام في المصفوفة مهما كان عمق التداخل، مع كل استدعاء.