Avatar ·

PHP में रिकर्सन कैसे लागू करें?

सभी को नमस्ते! कृपया बताएं कि PHP में रिकर्सन को सही तरीके से कैसे लागू करें। मैं एक मल्टीडायमेंशनल array को traverse करने और सभी values की गणना करने के लिए function लिख रहा हूं, लेकिन आउटपुट में या तो 0 मिलता है या infinite loop।

मैंने यह प्रयास किया:

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

समस्या यह है कि विभिन्न arrays के साथ function के बार-बार कॉल करने पर static variable के कारण result accumulate हो जाता है। मैंने sum को reference (&$sum) द्वारा पास करने का भी प्रयास किया, लेकिन तब function unexpected values return करता है। global variable वाला विकल्प भी उपयुक्त नहीं है — यह कोड की पवित्रता के सिद्धांतों का उल्लंघन करता है।

मैं उम्मीद करता हूं कि function को किसी भी nesting level के array में सभी numbers का sum return करना चाहिए, और प्रत्येक call स्वतंत्र हो।