Сбросить все ключи многомерного массива
Иногда возникает ситуация, когда требуется сбросить все ключи массива, т.е. сделать, чтобы они все снова шли по порядку 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, то будут сброшены только числовые ключи.
Оставьте комментарий
Если эта статья была полезной для вас, оставьте комментарий ниже или задайте интересующий Вас вопрос. Ваш опыт может помочь другим читателям!
Написать комментарий