Array Functions
PHP provides an extensive collection of built-in functions for array manipulation. This comprehensive guide covers the most important array functions organized by their primary use cases. PHP Array Functions - Full Documentation ↗
Array Information & Validation
Section titled “Array Information & Validation”These functions help you inspect and validate arrays.
count() - Get Array Length
Section titled “count() - Get Array Length”Returns the number of elements in an array.
$fruits = ['apple', 'banana', 'orange'];echo count($fruits);  // Outputs: 3
// Multidimensional arrays$users = [    ['name' => 'John', 'age' => 25],    ['name' => 'Jane', 'age' => 30]];echo count($users);           // Outputs: 2 (top level)echo count($users, COUNT_RECURSIVE);  // Outputs: 6 (all elements)is_array() - Check if Variable is Array
Section titled “is_array() - Check if Variable is Array”Determines whether a variable is an array.
$data = ['apple', 'banana'];$string = 'hello';
var_dump(is_array($data));    // bool(true)var_dump(is_array($string));  // bool(false)array_key_exists() - Check if Key Exists
Section titled “array_key_exists() - Check if Key Exists”Checks if a specified key exists in an array.
$user = ['name' => 'John', 'email' => 'john@example.com'];
if (array_key_exists('name', $user)) {    echo "Name exists: " . $user['name'];}
// Note: Different from isset() - works with null values$data = ['key' => null];var_dump(array_key_exists('key', $data));  // bool(true)var_dump(isset($data['key']));             // bool(false)empty() and isset() - Check Values
Section titled “empty() and isset() - Check Values”$data = ['name' => 'John', 'age' => 0, 'email' => ''];
var_dump(isset($data['name']));    // bool(true)var_dump(empty($data['age']));     // bool(true) - 0 is emptyvar_dump(empty($data['email']));   // bool(true) - empty stringvar_dump(isset($data['phone']));   // bool(false) - doesn't existArray Manipulation & Modification
Section titled “Array Manipulation & Modification”Functions for adding, removing, and modifying array elements.
Adding Elements
Section titled “Adding Elements”array_push() - Add to End
Section titled “array_push() - Add to End”Adds one or more elements to the end of an array.
$colors = ['red', 'green'];array_push($colors, 'blue', 'yellow');print_r($colors);  // ['red', 'green', 'blue', 'yellow']
// Alternative syntax (PHP 7.4+)$colors[] = 'purple';  // Same as array_push($colors, 'purple')array_unshift() - Add to Beginning
Section titled “array_unshift() - Add to Beginning”Adds elements to the beginning of an array.
$numbers = [2, 3, 4];array_unshift($numbers, 0, 1);print_r($numbers);  // [0, 1, 2, 3, 4]array_splice() - Insert at Specific Position
Section titled “array_splice() - Insert at Specific Position”Removes and replaces elements at any position.
$fruits = ['apple', 'banana', 'orange'];
// Insert 'grape' at position 1 without removing anythingarray_splice($fruits, 1, 0, ['grape']);print_r($fruits);  // ['apple', 'grape', 'banana', 'orange']
// Replace 'banana' with 'mango'array_splice($fruits, 2, 1, ['mango']);print_r($fruits);  // ['apple', 'grape', 'mango', 'orange']Removing Elements
Section titled “Removing Elements”array_pop() - Remove from End
Section titled “array_pop() - Remove from End”Removes and returns the last element.
$stack = ['item1', 'item2', 'item3'];$lastItem = array_pop($stack);echo $lastItem;  // 'item3'print_r($stack); // ['item1', 'item2']array_shift() - Remove from Beginning
Section titled “array_shift() - Remove from Beginning”Removes and returns the first element.
$queue = ['first', 'second', 'third'];$firstItem = array_shift($queue);echo $firstItem;  // 'first'print_r($queue);  // ['second', 'third']unset() - Remove Specific Elements
Section titled “unset() - Remove Specific Elements”Removes elements by key.
$data = ['a' => 1, 'b' => 2, 'c' => 3];unset($data['b']);print_r($data);  // ['a' => 1, 'c' => 3]
// Remove multiple elementsunset($data['a'], $data['c']);print_r($data);  // []Array Keys and Values
Section titled “Array Keys and Values”array_keys() - Get All Keys
Section titled “array_keys() - Get All Keys”Returns an array of all keys.
$person = ['name' => 'John', 'age' => 30, 'city' => 'NYC'];$keys = array_keys($person);print_r($keys);  // ['name', 'age', 'city']
// Get keys for specific value$colors = ['red', 'blue', 'red', 'green'];$redKeys = array_keys($colors, 'red');print_r($redKeys);  // [0, 2]array_values() - Get All Values
Section titled “array_values() - Get All Values”Returns an array of all values with numeric keys.
$person = ['name' => 'John', 'age' => 30, 'city' => 'NYC'];$values = array_values($person);print_r($values);  // ['John', 30, 'NYC']array_flip() - Swap Keys and Values
Section titled “array_flip() - Swap Keys and Values”Exchanges keys with their associated values.
$original = ['a' => 1, 'b' => 2, 'c' => 3];$flipped = array_flip($original);print_r($flipped);  // [1 => 'a', 2 => 'b', 3 => 'c']Array Search & Filtering
Section titled “Array Search & Filtering”Functions for finding and filtering array elements.
in_array() - Check if Value Exists
Section titled “in_array() - Check if Value Exists”Searches for a value in an array.
$fruits = ['apple', 'banana', 'orange'];
var_dump(in_array('banana', $fruits));  // bool(true)var_dump(in_array('grape', $fruits));   // bool(false)
// Strict type checking$numbers = [1, 2, 3, '4'];var_dump(in_array(4, $numbers));        // bool(true) - loose comparisonvar_dump(in_array(4, $numbers, true));  // bool(false) - strict comparisonarray_search() - Find Key by Value
Section titled “array_search() - Find Key by Value”Returns the key of the first matching value.
$fruits = ['apple', 'banana', 'orange'];$key = array_search('banana', $fruits);echo $key;  // Outputs: 1
// Returns false if not found$key = array_search('grape', $fruits);var_dump($key);  // bool(false)
// With strict comparison$numbers = [1, 2, 3, '4'];$key = array_search(4, $numbers, true);var_dump($key);  // bool(false) - strict comparisonarray_filter() - Filter Array Elements
Section titled “array_filter() - Filter Array Elements”Filters elements using a callback function.
$numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
// Filter even numbers$evenNumbers = array_filter($numbers, function($n) {    return $n % 2 === 0;});print_r($evenNumbers);  // [2, 4, 6, 8, 10]
// Filter by key and value$users = [    'john' => ['age' => 25, 'active' => true],    'jane' => ['age' => 17, 'active' => true],    'bob' => ['age' => 30, 'active' => false]];
$activeAdults = array_filter($users, function($user, $key) {    return $user['age'] >= 18 && $user['active'];}, ARRAY_FILTER_USE_BOTH);
print_r($activeAdults);  // Only 'john'array_column() - Extract Column from 2D Array
Section titled “array_column() - Extract Column from 2D Array”Extracts a single column from a multidimensional array.
$users = [    ['id' => 1, 'name' => 'John', 'email' => 'john@example.com'],    ['id' => 2, 'name' => 'Jane', 'email' => 'jane@example.com'],    ['id' => 3, 'name' => 'Bob', 'email' => 'bob@example.com']];
// Extract names$names = array_column($users, 'name');print_r($names);  // ['John', 'Jane', 'Bob']
// Extract emails with ID as key$emails = array_column($users, 'email', 'id');print_r($emails);  // [1 => 'john@example.com', 2 => 'jane@example.com', ...]array_unique() - Remove Duplicate Values
Section titled “array_unique() - Remove Duplicate Values”Removes duplicate values from an array.
$colors = ['red', 'blue', 'red', 'green', 'blue'];$uniqueColors = array_unique($colors);print_r($uniqueColors);  // ['red', 'blue', 'green']
// With associative arrays$data = [    'a' => 'apple',    'b' => 'banana',    'c' => 'apple',    'd' => 'orange'];$unique = array_unique($data);print_r($unique);  // ['a' => 'apple', 'b' => 'banana', 'd' => 'orange']array_intersect() - Find Common Values
Section titled “array_intersect() - Find Common Values”Returns values that exist in all arrays.
$array1 = ['a', 'b', 'c', 'd'];$array2 = ['b', 'c', 'd', 'e'];$array3 = ['c', 'd', 'e', 'f'];
$common = array_intersect($array1, $array2, $array3);print_r($common);  // ['c', 'd']array_diff() - Find Different Values
Section titled “array_diff() - Find Different Values”Returns values from the first array that are not in other arrays.
$array1 = ['a', 'b', 'c', 'd'];$array2 = ['b', 'c'];
$diff = array_diff($array1, $array2);print_r($diff);  // ['a', 'd']Array Transformation
Section titled “Array Transformation”Functions that transform arrays into different structures or apply operations to all elements.
array_map() - Apply Function to Elements
Section titled “array_map() - Apply Function to Elements”Applies a callback function to each element.
$numbers = [1, 2, 3, 4, 5];
// Square each number$squared = array_map(function($n) {    return $n * $n;}, $numbers);print_r($squared);  // [1, 4, 9, 16, 25]
// Work with multiple arrays$names = ['John', 'Jane', 'Bob'];$ages = [25, 30, 35];
$combined = array_map(function($name, $age) {    return "$name is $age years old";}, $names, $ages);print_r($combined);  // ['John is 25 years old', 'Jane is 30 years old', ...]array_walk() - Apply Function with Side Effects
Section titled “array_walk() - Apply Function with Side Effects”Applies a function to each element, allowing modification of the original array.
$prices = ['apple' => 1.50, 'banana' => 0.75, 'orange' => 2.00];
// Add tax to each pricearray_walk($prices, function(&$price, $item) {    $price = round($price * 1.08, 2);  // 8% tax});print_r($prices);  // ['apple' => 1.62, 'banana' => 0.81, 'orange' => 2.16]
// With additional dataarray_walk($prices, function(&$price, $item, $taxRate) {    $price = round($price * (1 + $taxRate), 2);}, 0.05);  // 5% additional taxarray_reduce() - Reduce Array to Single Value
Section titled “array_reduce() - Reduce Array to Single Value”Iteratively reduces an array to a single value using a callback.
$numbers = [1, 2, 3, 4, 5];
// Sum all numbers$sum = array_reduce($numbers, function($carry, $item) {    return $carry + $item;}, 0);echo $sum;  // 15
// Find maximum value$max = array_reduce($numbers, function($carry, $item) {    return max($carry, $item);}, PHP_INT_MIN);echo $max;  // 5
// Build a string$words = ['Hello', 'World', 'PHP'];$sentence = array_reduce($words, function($carry, $word) {    return $carry . ' ' . $word;}, '');echo trim($sentence);  // "Hello World PHP"array_chunk() - Split Array into Chunks
Section titled “array_chunk() - Split Array into Chunks”Splits an array into chunks of specified size.
$data = [1, 2, 3, 4, 5, 6, 7, 8, 9];
// Split into chunks of 3$chunks = array_chunk($data, 3);print_r($chunks);  // [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
// Preserve keys$associativeData = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4];$chunks = array_chunk($associativeData, 2, true);print_r($chunks);  // [['a' => 1, 'b' => 2], ['c' => 3, 'd' => 4]]array_slice() - Extract Portion of Array
Section titled “array_slice() - Extract Portion of Array”Returns a slice of an array.
$fruits = ['apple', 'banana', 'orange', 'grape', 'kiwi'];
// Get elements 1-3$slice = array_slice($fruits, 1, 3);print_r($slice);  // ['banana', 'orange', 'grape']
// Get last 2 elements$lastTwo = array_slice($fruits, -2);print_r($lastTwo);  // ['grape', 'kiwi']
// Preserve keys$data = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4];$slice = array_slice($data, 1, 2, true);print_r($slice);  // ['b' => 2, 'c' => 3]array_reverse() - Reverse Array Order
Section titled “array_reverse() - Reverse Array Order”Reverses the order of array elements.
$numbers = [1, 2, 3, 4, 5];$reversed = array_reverse($numbers);print_r($reversed);  // [5, 4, 3, 2, 1]
// Preserve keys$data = ['first' => 1, 'second' => 2, 'third' => 3];$reversed = array_reverse($data, true);print_r($reversed);  // ['third' => 3, 'second' => 2, 'first' => 1]implode() and explode() - String Conversion
Section titled “implode() and explode() - String Conversion”Convert between arrays and strings.
// Array to string$fruits = ['apple', 'banana', 'orange'];$string = implode(', ', $fruits);echo $string;  // "apple, banana, orange"
// String to array$text = "one,two,three,four";$array = explode(',', $text);print_r($array);  // ['one', 'two', 'three', 'four']
// Limit splits$limitedArray = explode(',', $text, 2);print_r($limitedArray);  // ['one', 'two,three,four']Array Comparison & Merging
Section titled “Array Comparison & Merging”Functions for combining and comparing arrays.
array_merge() - Merge Arrays
Section titled “array_merge() - Merge Arrays”Merges one or more arrays together.
$array1 = ['a', 'b', 'c'];$array2 = ['d', 'e', 'f'];$merged = array_merge($array1, $array2);print_r($merged);  // ['a', 'b', 'c', 'd', 'e', 'f']
// With associative arrays$defaults = ['color' => 'blue', 'size' => 'medium'];$userPrefs = ['color' => 'red', 'style' => 'modern'];$config = array_merge($defaults, $userPrefs);print_r($config);  // ['color' => 'red', 'size' => 'medium', 'style' => 'modern']array_merge_recursive() - Recursive Merge
Section titled “array_merge_recursive() - Recursive Merge”Merges arrays recursively, combining values with same keys into arrays.
$array1 = [    'colors' => ['red', 'blue'],    'sizes' => ['S', 'M']];
$array2 = [    'colors' => ['green', 'yellow'],    'sizes' => ['L', 'XL'],    'styles' => ['modern', 'classic']];
$merged = array_merge_recursive($array1, $array2);print_r($merged);// Output:// [//     'colors' => ['red', 'blue', 'green', 'yellow'],//     'sizes' => ['S', 'M', 'L', 'XL'],//     'styles' => ['modern', 'classic']// ]array_combine() - Create Array Using Keys and Values
Section titled “array_combine() - Create Array Using Keys and Values”Creates an array by using one array for keys and another for values.
$keys = ['name', 'email', 'age'];$values = ['John Doe', 'john@example.com', 30];
$combined = array_combine($keys, $values);print_r($combined);// ['name' => 'John Doe', 'email' => 'john@example.com', 'age' => 30]array_replace() - Replace Array Values
Section titled “array_replace() - Replace Array Values”Replaces values of an array with values from other arrays having the same keys.
$base = ['a' => 1, 'b' => 2, 'c' => 3];$replacements = ['b' => 20, 'd' => 4];
$result = array_replace($base, $replacements);print_r($result);  // ['a' => 1, 'b' => 20, 'c' => 3, 'd' => 4]array_intersect_key() - Intersect by Keys
Section titled “array_intersect_key() - Intersect by Keys”Returns an array containing all keys that exist in all compared arrays.
$array1 = ['a' => 1, 'b' => 2, 'c' => 3];$array2 = ['a' => 4, 'c' => 5, 'd' => 6];
$intersection = array_intersect_key($array1, $array2);print_r($intersection);  // ['a' => 1, 'c' => 3]array_diff_key() - Difference by Keys
Section titled “array_diff_key() - Difference by Keys”Returns an array containing all keys from the first array that are not in other arrays.
$array1 = ['a' => 1, 'b' => 2, 'c' => 3];$array2 = ['a' => 4, 'c' => 5];
$diff = array_diff_key($array1, $array2);print_r($diff);  // ['b' => 2]array_pad() - Pad Array to Length
Section titled “array_pad() - Pad Array to Length”Pads an array to specified length with a given value.
$input = ['a', 'b', 'c'];
// Pad to length 5 with 'x'$padded = array_pad($input, 5, 'x');print_r($padded);  // ['a', 'b', 'c', 'x', 'x']
// Pad to the left (negative size)$leftPadded = array_pad($input, -5, 'x');print_r($leftPadded);  // ['x', 'x', 'a', 'b', 'c']Array Sorting & Ordering
Section titled “Array Sorting & Ordering”Functions for sorting arrays in various ways.
Basic Sorting Functions
Section titled “Basic Sorting Functions”sort() - Sort Indexed Array (Values)
Section titled “sort() - Sort Indexed Array (Values)”Sorts an indexed array by values in ascending order.
$fruits = ['orange', 'apple', 'banana'];sort($fruits);print_r($fruits);  // ['apple', 'banana', 'orange']
$numbers = [3, 1, 4, 1, 5];sort($numbers);print_r($numbers);  // [1, 1, 3, 4, 5]rsort() - Reverse Sort Indexed Array
Section titled “rsort() - Reverse Sort Indexed Array”Sorts an indexed array by values in descending order.
$numbers = [3, 1, 4, 1, 5];rsort($numbers);print_r($numbers);  // [5, 4, 3, 1, 1]asort() - Sort Associative Array by Values
Section titled “asort() - Sort Associative Array by Values”Sorts an associative array by values while maintaining key-value associations.
$ages = ['John' => 25, 'Jane' => 30, 'Bob' => 20];asort($ages);print_r($ages);  // ['Bob' => 20, 'John' => 25, 'Jane' => 30]arsort() - Reverse Sort Associative Array by Values
Section titled “arsort() - Reverse Sort Associative Array by Values”Sorts an associative array by values in descending order.
$scores = ['Alice' => 95, 'Bob' => 87, 'Charlie' => 92];arsort($scores);print_r($scores);  // ['Alice' => 95, 'Charlie' => 92, 'Bob' => 87]ksort() - Sort by Keys
Section titled “ksort() - Sort by Keys”Sorts an array by keys in ascending order.
$data = ['c' => 3, 'a' => 1, 'b' => 2];ksort($data);print_r($data);  // ['a' => 1, 'b' => 2, 'c' => 3]krsort() - Reverse Sort by Keys
Section titled “krsort() - Reverse Sort by Keys”Sorts an array by keys in descending order.
$data = ['a' => 1, 'c' => 3, 'b' => 2];krsort($data);print_r($data);  // ['c' => 3, 'b' => 2, 'a' => 1]Advanced Sorting Functions
Section titled “Advanced Sorting Functions”usort() - Custom Sort by Values
Section titled “usort() - Custom Sort by Values”Sorts by values using a user-defined comparison function.
$people = [    ['name' => 'John', 'age' => 25],    ['name' => 'Jane', 'age' => 30],    ['name' => 'Bob', 'age' => 20]];
// Sort by ageusort($people, function($a, $b) {    return $a['age'] <=> $b['age'];  // PHP 7+ spaceship operator});print_r($people);  // Bob (20), John (25), Jane (30)
// Sort by name lengthusort($people, function($a, $b) {    return strlen($a['name']) <=> strlen($b['name']);});uasort() - Custom Sort Preserving Keys
Section titled “uasort() - Custom Sort Preserving Keys”Sorts by values using a user-defined function while preserving keys.
$students = [    'student1' => ['name' => 'Alice', 'grade' => 85],    'student2' => ['name' => 'Bob', 'grade' => 92],    'student3' => ['name' => 'Charlie', 'grade' => 78]];
uasort($students, function($a, $b) {    return $b['grade'] <=> $a['grade'];  // Descending order});print_r($students);  // Keys preserved, sorted by gradeuksort() - Custom Sort by Keys
Section titled “uksort() - Custom Sort by Keys”Sorts by keys using a user-defined comparison function.
$data = [    'item_10' => 'Ten',    'item_2' => 'Two',    'item_1' => 'One'];
uksort($data, function($a, $b) {    // Extract numbers and compare numerically    $numA = (int)str_replace('item_', '', $a);    $numB = (int)str_replace('item_', '', $b);    return $numA <=> $numB;});print_r($data);  // Sorted by numeric value in keyMulti-dimensional Array Sorting
Section titled “Multi-dimensional Array Sorting”array_multisort() - Sort Multiple Arrays
Section titled “array_multisort() - Sort Multiple Arrays”Sorts multiple arrays or multi-dimensional arrays.
$names = ['John', 'Jane', 'Bob'];$ages = [25, 30, 20];
// Sort both arrays based on agesarray_multisort($ages, SORT_ASC, $names);print_r($ages);   // [20, 25, 30]print_r($names);  // ['Bob', 'John', 'Jane']
// Multi-dimensional array sorting$people = [    ['name' => 'John', 'age' => 25, 'salary' => 50000],    ['name' => 'Jane', 'age' => 30, 'salary' => 60000],    ['name' => 'Bob', 'age' => 25, 'salary' => 45000]];
// Extract columns for sorting$ages = array_column($people, 'age');$salaries = array_column($people, 'salary');
// Sort by age (ascending), then by salary (descending)array_multisort($ages, SORT_ASC, $salaries, SORT_DESC, $people);print_r($people);Sorting Options
Section titled “Sorting Options”$data = ['10', '2', '1', '20'];
// Default sort (lexicographic)sort($data);print_r($data);  // ['1', '10', '2', '20']
// Numeric sortsort($data, SORT_NUMERIC);print_r($data);  // ['1', '2', '10', '20']
// Case-insensitive string sort$words = ['Banana', 'apple', 'Cherry'];sort($words, SORT_STRING | SORT_FLAG_CASE);print_r($words);  // ['apple', 'Banana', 'Cherry']Practical Examples & Use Cases
Section titled “Practical Examples & Use Cases”Real-world examples demonstrating how to combine array functions effectively.
Example 1: User Management System
Section titled “Example 1: User Management System”$users = [    ['id' => 1, 'name' => 'John Doe', 'email' => 'john@example.com', 'age' => 25, 'active' => true],    ['id' => 2, 'name' => 'Jane Smith', 'email' => 'jane@example.com', 'age' => 17, 'active' => true],    ['id' => 3, 'name' => 'Bob Johnson', 'email' => 'bob@example.com', 'age' => 30, 'active' => false],    ['id' => 4, 'name' => 'Alice Brown', 'email' => 'alice@example.com', 'age' => 28, 'active' => true]];
// Get active adult users (age >= 18)$activeAdults = array_filter($users, function($user) {    return $user['age'] >= 18 && $user['active'];});
// Sort by age (descending)usort($activeAdults, function($a, $b) {    return $b['age'] <=> $a['age'];});
// Extract just names and emails$contactInfo = array_map(function($user) {    return ['name' => $user['name'], 'email' => $user['email']];}, $activeAdults);
print_r($contactInfo);Example 2: E-commerce Product Processing
Section titled “Example 2: E-commerce Product Processing”$products = [    ['name' => 'Laptop', 'category' => 'Electronics', 'price' => 999.99, 'stock' => 15],    ['name' => 'Mouse', 'category' => 'Electronics', 'price' => 29.99, 'stock' => 0],    ['name' => 'Desk', 'category' => 'Furniture', 'price' => 199.99, 'stock' => 8],    ['name' => 'Chair', 'category' => 'Furniture', 'price' => 149.99, 'stock' => 12],];
// Group products by category$grouped = array_reduce($products, function($result, $product) {    $result[$product['category']][] = $product;    return $result;}, []);
// Get available products (stock > 0) with discount$availableProducts = array_map(function($product) {    if ($product['stock'] > 0) {        $product['discounted_price'] = round($product['price'] * 0.9, 2); // 10% discount        return $product;    }    return null;}, $products);
// Remove null values (out of stock items)$availableProducts = array_filter($availableProducts);
// Sort by price (ascending)usort($availableProducts, function($a, $b) {    return $a['price'] <=> $b['price'];});Example 3: Data Processing Pipeline
Section titled “Example 3: Data Processing Pipeline”$rawData = [    'user1,John Doe,25,Engineer',    'user2,Jane Smith,30,Designer',    'user3,Bob Johnson,28,Developer',    'user4,Alice Brown,32,Manager'];
// Process CSV-like data$processedUsers = array_map(function($line) {    $parts = explode(',', $line);    return [        'id' => $parts[0],        'name' => $parts[1],        'age' => (int)$parts[2],        'role' => $parts[3]    ];}, $rawData);
// Group by role$roleGroups = array_reduce($processedUsers, function($groups, $user) {    $groups[$user['role']][] = $user;    return $groups;}, []);
// Get average age per role$roleAverages = array_map(function($users) {    $ages = array_column($users, 'age');    return round(array_sum($ages) / count($ages), 1);}, $roleGroups);
print_r($roleAverages);Example 4: Configuration Merging
Section titled “Example 4: Configuration Merging”// Default configuration$defaultConfig = [    'database' => [        'host' => 'localhost',        'port' => 3306,        'charset' => 'utf8mb4'    ],    'cache' => [        'enabled' => false,        'ttl' => 3600    ],    'features' => ['logging', 'monitoring']];
// User configuration$userConfig = [    'database' => [        'host' => 'prod-db.example.com',        'username' => 'app_user',        'password' => 'secret123'    ],    'cache' => [        'enabled' => true    ],    'features' => ['logging', 'analytics', 'debugging']];
// Merge configurations recursively$finalConfig = array_merge_recursive($defaultConfig, $userConfig);
// For features, we want unique values only$finalConfig['features'] = array_unique($finalConfig['features']);
print_r($finalConfig);Example 5: Statistics and Analysis
Section titled “Example 5: Statistics and Analysis”$salesData = [    ['month' => 'Jan', 'revenue' => 12500, 'orders' => 45],    ['month' => 'Feb', 'revenue' => 15800, 'orders' => 52],    ['month' => 'Mar', 'revenue' => 18200, 'orders' => 63],    ['month' => 'Apr', 'revenue' => 14300, 'orders' => 48],    ['month' => 'May', 'revenue' => 21000, 'orders' => 71]];
// Calculate total revenue$totalRevenue = array_sum(array_column($salesData, 'revenue'));
// Calculate average revenue per month$avgRevenue = $totalRevenue / count($salesData);
// Find month with highest revenue$maxRevenueMonth = array_reduce($salesData, function($max, $current) {    return (!$max || $current['revenue'] > $max['revenue']) ? $current : $max;});
// Calculate revenue growth month-over-month$growthData = [];for ($i = 1; $i < count($salesData); $i++) {    $current = $salesData[$i]['revenue'];    $previous = $salesData[$i-1]['revenue'];    $growth = round((($current - $previous) / $previous) * 100, 2);
    $growthData[] = [        'month' => $salesData[$i]['month'],        'growth_percent' => $growth    ];}
echo "Total Revenue: $" . number_format($totalRevenue) . "\n";echo "Average Revenue: $" . number_format($avgRevenue) . "\n";echo "Best Month: " . $maxRevenueMonth['month'] . " ($" .     number_format($maxRevenueMonth['revenue']) . ")\n";Performance Tips
Section titled “Performance Tips”// ✅ Efficient: Use array_column() for extracting data$userIds = array_column($users, 'id');
// ❌ Less efficient: Manual loop$userIds = [];foreach ($users as $user) {    $userIds[] = $user['id'];}
// ✅ Efficient: Use array_key_exists() for null valuesif (array_key_exists('optional_field', $data)) {    // Handle the field}
// ❌ Less reliable: Using isset() misses null valuesif (isset($data['optional_field'])) {    // This won't work if the value is null}
// ✅ Efficient: Chain operations$result = array_unique(    array_filter(        array_map('trim', $inputArray),        'strlen'    ));