Как увеличить счетчик в рекурсии на единицу?

function r($b,$a){
    $new_mas = array();
    $i = 0;

    foreach($b as $uniq){

        var_dump($i);


        $k = array_search($uniq,$a);
        if($k!==false){
            $new_mas[]=$uniq;   
            unset($a[$k]);
        }else{
            unset($b[$i]);
        }
        if($i==(sizeof($b)-1)){
            if(sizeof($a)){
                $new_mas=array_merge($new_mas,r($b,$a));
            }
        }
        $i++;
    }

    return $new_mas; 
}

$dddd = r($b,$a);

Функция выводит

int(0)
int(1)
int(0)
int(1)
int(0)
int(1)

Мне нужно, чтобы счетчик постоянно увеличивался на 1, а не обнулялся в каком-то моменте. Подскажите, что неправильно ?


Ответы (1 шт):

Автор решения: Pavel Seletkov
$i = 0;
function r($b,$a){
    global $i;
    $new_mas = array();

    foreach($b as $uniq){

        var_dump($i);


        $k = array_search($uniq,$a);
        if($k!==false){
            $new_mas[]=$uniq;   
            unset($a[$k]);
        }else{
            unset($b[$i]);
        }
        if($i==(sizeof($b)-1)){
            if(sizeof($a)){
                $new_mas=array_merge($new_mas,r($b,$a));
            }
        }
        $i++;
    }

    return $new_mas;
}

$dddd = r($b,$a);

максимально топорный вариант.

→ Ссылка