How can recursion be implemented in PHP to handle nested referral structures effectively?

When dealing with nested referral structures in PHP, recursion can be used to effectively handle the traversal of the structure. By recursively calling a function to navigate through each level of the nested structure, you can easily process and manipulate the data without having to write separate code for each level.

function processReferral($referral, $depth = 0) {
    // Process the current referral
    echo str_repeat('-', $depth) . $referral['name'] . "\n";
    
    // Check if there are nested referrals
    if(isset($referral['referrals'])) {
        // Recursively call processReferral for each nested referral
        foreach($referral['referrals'] as $nestedReferral) {
            processReferral($nestedReferral, $depth + 1);
        }
    }
}

// Example nested referral structure
$referralStructure = [
    'name' => 'Alice',
    'referrals' => [
        [
            'name' => 'Bob',
            'referrals' => [
                [
                    'name' => 'Charlie'
                ]
            ]
        ],
        [
            'name' => 'David'
        ]
    ]
];

// Start processing the referral structure
processReferral($referralStructure);