Иногда возникает ситуация, когда требуется сбросить все ключи массива, т.е. сделать, чтобы они все снова шли по порядку 0, 1, 2...

Для этого можно воспользоваться стандартной функцией array_values().

Но вот если требуется сбросить ключи не только на первом уровне массива, а на всех уровнях, то тут она в чистом виде не справится.

Либо же может быть такая ситуация, что сбросить требуется только числовые ключи, чтобы все остальные ключи остались.

Предлагаю функцию, которая решает подобные задачи:

<?php

function array_values_recursive($arr, $clearDigitKeysOnly = false)
{
    $res = [];

    foreach ($arr as $key => $value) {
        if (!$clearDigitKeysOnly || is_numeric($key)) {
            $res[] = is_array($value) ? array_values_recursive($value, $clearDigitKeysOnly) : $value;
        } else {
            $res[$key] = is_array($value) ? array_values_recursive($value, $clearDigitKeysOnly) : $value;
        }
    }

    return $res;
}

Функция рекурсивно обходит все вложенные массивы.

Если же передать параметр clearDigitKeysOnly как true, то будут сброшены только числовые ключи.