PHP

Reindex Numeric Array Keys After Filtering or Deletion

Learn to reindex a PHP array's numeric keys sequentially after elements have been removed or filtered, ensuring proper array structure and iteration.

<?php
$data = ['apple', 'banana', 'orange', 'grape', 'kiwi'];

// Scenario 1: Removing an element using unset()
unset($data[1]); // Remove 'banana'
unset($data[3]); // Remove 'grape'

print_r($data);
/* Output before reindexing:
Array
(
    [0] => apple
    [2] => orange
    [4] => kiwi
)
*/

$reindexedData = array_values($data);
print_r($reindexedData);
/* Output after reindexing:
Array
(
    [0] => apple
    [1] => orange
    [2] => kiwi
)
*/

// Scenario 2: Reindexing after array_filter()
$numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
$evenNumbers = array_filter($numbers, function($num) {
    return $num % 2 == 0;
});
// $evenNumbers will have keys [1 => 2, 3 => 4, 5 => 6, ...]

print_r($evenNumbers);
/* Output before reindexing:
Array
(
    [1] => 2
    [3] => 4
    [5] => 6
    [7] => 8
    [9] => 10
)
*/

$reindexedEvenNumbers = array_values($evenNumbers);
print_r($reindexedEvenNumbers);
/* Output after reindexing:
Array
(
    [0] => 2
    [1] => 4
    [2] => 6
    [3] => 8
    [4] => 10
)
*/
?>
How it works: When elements are removed from an array using `unset()` or when an array is filtered using `array_filter()`, the original numeric keys are often preserved, leading to non-sequential gaps in the keys. The `array_values()` function is crucial for resetting and reindexing these numeric keys, ensuring they become sequential starting from 0. This is important for loops expecting consecutive indices or when consistent array structures are required.

Need help integrating this into your project?

Our team of expert developers can help you build your custom application from scratch.

Hire DigitalCodeLabs