PHP array_reverse() Function

PHP

PHP array_reverse() - Reverse Array Order

Author: PHP array transformation specialist with 12+ years of experience

Category: Array  •  Subcategory: array_reverse()

Introduction

The array_reverse() function in PHP is a convenient built-in method to reverse the order of elements in an array. Whether you need to invert the sequence for display purposes or manipulate data ordering in your applications, this function offers a simple and efficient solution. Additionally, it allows optional preservation of the array keys, making it versatile for various use cases.

Prerequisites

  • Basic understanding of PHP syntax and arrays
  • PHP installed on your machine (version 4 or above)
  • Access to a PHP runtime environment such as XAMPP, MAMP, or a live server
  • Optional: Familiarity with associative and indexed arrays

Setup Steps

  1. Install PHP (if not installed). You can download it from php.net.
  2. Create a new PHP file with a .php extension, e.g., reverse-array.php.
  3. Open the file in a code editor such as VSCode, Sublime Text, or PHPStorm.
  4. Write or copy PHP code using array_reverse().
  5. Run the script using the command line (php reverse-array.php) or via a web server.

Understanding the array_reverse() Function

array_reverse() reverses the order of the elements in an array and returns a new array. It does not modify the original array. The function has the following syntax:

array array_reverse(array $array, bool $preserve_keys = false)
  • $array: The input array to reverse.
  • $preserve_keys: Optional boolean flag. When set to true, the original keys are preserved. When false (default), keys are reset and re-indexed numerically.

Examples

Example 1: Reverse a Simple Indexed Array (Default Behavior)

<?php
$fruits = ['apple', 'banana', 'cherry'];
$reversed = array_reverse($fruits);
print_r($reversed);
?>

Output:

Array
(
    [0] => cherry
    [1] => banana
    [2] => apple
)

Explanation: The array elements are reversed, and keys are re-indexed from 0.

Example 2: Reverse an Associative Array With Keys Preserved

<?php
$user = [
    'name' => 'Alice',
    'age' => 30,
    'city' => 'New York'
];

$reversed_preserve_keys = array_reverse($user, true);
print_r($reversed_preserve_keys);
?>

Output:

Array
(
    [city] => New York
    [age] => 30
    [name] => Alice
)

Explanation: The order of elements is reversed but the original keys are kept intact.

Example 3: Reverse Array Without Preserving Keys

<?php
$user = [
    'name' => 'Alice',
    'age' => 30,
    'city' => 'New York'
];

$reversed = array_reverse($user);  // preserve_keys = false by default
print_r($reversed);
?>

Output:

Array
(
    [0] => New York
    [1] => 30
    [2] => Alice
)

Explanation: Keys are reset to numeric indices starting at 0 after reversing the elements.

Example 4: Practical Use Case - Reversing a Queue

<?php
$task_queue = ['task1', 'task2', 'task3'];
$reversed_queue = array_reverse($task_queue);

echo "Original queue:\n";
print_r($task_queue);

echo "\nReversed queue (process tasks from last to first):\n";
print_r($reversed_queue);
?>

Best Practices

  • Avoid modifying the input array directly: array_reverse() returns a new array. Always assign it to a variable to keep your code clean.
  • Be mindful of keys: When working with associative arrays, use the $preserve_keys parameter wisely to prevent unexpected key changes.
  • Use descriptive variable names: Naming the reversed array variable clearly indicates intent, e.g., $reversedArray, which improves code readability.
  • Combine with other array functions: Sometimes reversing data is part of a transformation chain, so combine array_reverse() with functions like array_map() or array_filter() as needed.

Common Mistakes

  • Assuming array_reverse() modifies the original array – it does not; it returns a reversed copy.
  • Forgetting to capture the returned value, leading to no changes being reflected in variables.
  • Not setting $preserve_keys to true when working with associative arrays, causing keys to be lost or reset.
  • Using array_reverse() on multi-dimensional arrays without looping or recursion, which only reverses the outermost array.

Interview Questions

Junior-level Interview Questions

  • Q1: What does the array_reverse() function do in PHP?
    A1: It returns a new array with the elements of the input array in reversed order.
  • Q2: How do you preserve the array keys when reversing an array using array_reverse()?
    A2: By passing true as the second argument to array_reverse().
  • Q3: Will array_reverse() modify the original array?
    A3: No, it returns a new reversed array without modifying the original.
  • Q4: What type of keys are preserved by array_reverse() when the $preserve_keys parameter is set to true?
    A4: Both numeric and associative keys are preserved.
  • Q5: Can array_reverse() be used on empty arrays?
    A5: Yes, it will return an empty array.

Mid-level Interview Questions

  • Q1: How does array_reverse() treat associative arrays differently when $preserve_keys is false?
    A1: It resets the original keys to numeric indexes starting at 0, losing the original key names.
  • Q2: What happens if you use array_reverse() on a multi-dimensional array?
    A2: Only the top-level array elements are reversed; the sub-arrays remain unchanged.
  • Q3: Show a simple way to reverse an array and immediately print the reversed elements without storing in a variable.
    A3: Use print_r(array_reverse($array));.
  • Q4: Is array_reverse() suitable for reversing large arrays in terms of performance?
    A4: It is efficient for most use cases but large arrays may require optimization or alternative approaches based on context.
  • Q5: How do you reverse an array and preserve non-numeric keys and maintain the original order of those keys?
    A5: Use array_reverse($array, true); to reverse elements while preserving the original keys.

Senior-level Interview Questions

  • Q1: Describe how array_reverse() behaves internally with respect to key preservation and what PHP engine optimizations it might benefit from.
    A1: Internally, if $preserve_keys is false, PHP re-indexes keys using a new numeric index for better memory alignment. If true, keys are preserved requiring additional handling. The function can benefit from engine optimizations such as copy-on-write and efficient array pointer manipulation.
  • Q2: Can you combine array_reverse() with other PHP array functions to reverse a subset of an array?
    A2: Yes, by using functions like array_slice() to extract a subset followed by array_reverse() to reverse only that segment.
  • Q3: How would array_reverse() affect array keys in a sparse numeric array like [0=>1, 2=>2, 4=>3] when keys are preserved vs. not preserved?
    A3: With preserved keys, the sparse keys 0, 2, 4 remain assigned but element order reverses. Without preservation, keys are reset to 0,1,2, sequentially.
  • Q4: Is it possible to reverse an array in-place with array_reverse()? Why or why not?
    A4: No, because array_reverse() returns a new array and does not modify the original input array in place.
  • Q5: Discuss scenarios where not preserving keys using array_reverse() might cause issues in application logic.
    A5: When array keys represent meaningful identifiers (e.g., user IDs, configuration keys), resetting keys can break lookups, cause mismatches, or logical errors in data processing.

FAQ

Q: What is the default behavior of keys in array_reverse()?

A: By default, keys are not preserved; the elements are re-indexed with numeric keys starting from 0.

Q: Can array_reverse() be used on both indexed and associative arrays?

A: Yes, it works on both types, with the option to preserve keys for associative arrays.

Q: How is array_reverse() different from array_flip()?

A: array_reverse() reverses the order of elements, while array_flip() swaps keys with values.

Q: Can reversing an array with array_reverse() cause data loss?

A: No, reversing alone does not cause data loss; however, not preserving keys may cause key-value relationships to appear changed.

Q: Is array_reverse() limited to one-dimensional arrays?

A: It only reverses the top-level array. To reverse deeper levels, you need recursion or looping.

Conclusion

The array_reverse() function in PHP is a powerful yet simple tool for reversing array element order. Whether used for indexed or associative arrays, this function gives flexibility with key preservation, enabling developers to handle various array manipulation tasks safely and effectively. Understanding its parameters and behavior ensures you avoid common pitfalls and utilize it strategically in your PHP projects.