Разъясните пожалуйста поведение переменных

В контроллере Ларавела есть метод:

public function method1(Request $request): Response
{
    function recursive($array, $testValue)
    {
        \Log::info('+++++++++++++++++++++++++++');
        \Log::info('testValue=' . $testValue);
        foreach ($array as $key => $value) {
            \Log::info('--- in foreach ---');
            \Log::info('key=' . $key);
            \Log::info('testValue=' . $testValue);
            recursive($value, 'other');
        }
    }

    $data =
        array(
            'a' =>
                array(
                    'aa' =>
                        array(),
                    'ab' =>
                        array(),
                ),
        );

    \Log::info($data);

    recursive(arrayFirstValue($data), 'first');

    return response(null, Response::HTTP_OK);
}

function arrayFirstValue($array, $default = null)
{
    foreach ($array as $item)
        return $item;
    return $default;
}

Код сделал условный для демонстрации проблемы. В переменной $data содержится маленький фрагмент дерева, с помощью функции recursive обхожу дерево и вывожу данные. Получаю результат:

[2021-05-18 08:06:54] local.INFO: +++++++++++++++++++++++++++   
[2021-05-18 08:06:54] local.INFO: testValue=first   
[2021-05-18 08:06:54] local.INFO: --- in foreach ---   
[2021-05-18 08:06:54] local.INFO: key=aa   
[2021-05-18 08:06:54] local.INFO: testValue=first 

[2021-05-18 08:06:54] local.INFO: +++++++++++++++++++++++++++   
[2021-05-18 08:06:54] local.INFO: testValue=other   // почему разные значения?
[2021-05-18 08:06:54] local.INFO: --- in foreach ---   
[2021-05-18 08:06:54] local.INFO: key=ab   
[2021-05-18 08:06:54] local.INFO: testValue=first   // почему разные значения?

[2021-05-18 08:06:54] local.INFO: +++++++++++++++++++++++++++   
[2021-05-18 08:06:54] local.INFO: testValue=other

Не понимаю, почему переменная testValue после входа в цикл, вдруг отображает предыдущее значение. В вебе недавно, раньше были десктопные языки, исходя из предыдущего опыта, подобное поведение кажется нелогичным.


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