Arrays are fundamental data structures in PHP, and mastering their manipulation is crucial for efficient programming. PHP provides a rich set of built-in functions to work with arrays, making it easier for developers to perform complex operations with just a few lines of code. In this comprehensive guide, we'll explore the most useful PHP array functions, demonstrating their practical applications with clear examples.

🔍 Array Creation and Information

Let's start by looking at functions that help create arrays and retrieve information about them.

array() and []

The array() function and the shorthand [] syntax are used to create arrays in PHP.

$fruits = array("apple", "banana", "cherry");
$colors = ["red", "green", "blue"];

print_r($fruits);
print_r($colors);

Output:

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

count()

The count() function returns the number of elements in an array.

$numbers = [1, 2, 3, 4, 5];
echo "Number of elements: " . count($numbers);

Output:

Number of elements: 5

is_array()

Use is_array() to check if a variable is an array.

$test1 = [1, 2, 3];
$test2 = "Hello";

var_dump(is_array($test1));
var_dump(is_array($test2));

Output:

bool(true)
bool(false)

🔀 Array Manipulation

Now, let's dive into functions that allow us to modify and manipulate arrays.

array_push() and array_pop()

array_push() adds one or more elements to the end of an array, while array_pop() removes and returns the last element.

$stack = ["book", "pen"];
array_push($stack, "pencil", "eraser");
print_r($stack);

$last_item = array_pop($stack);
echo "Popped item: $last_item\n";
print_r($stack);

Output:

Array
(
    [0] => book
    [1] => pen
    [2] => pencil
    [3] => eraser
)
Popped item: eraser
Array
(
    [0] => book
    [1] => pen
    [2] => pencil
)

array_unshift() and array_shift()

array_unshift() adds elements to the beginning of an array, while array_shift() removes and returns the first element.

$queue = ["customer1", "customer2"];
array_unshift($queue, "customer0");
print_r($queue);

$first_customer = array_shift($queue);
echo "First customer: $first_customer\n";
print_r($queue);

Output:

Array
(
    [0] => customer0
    [1] => customer1
    [2] => customer2
)
First customer: customer0
Array
(
    [0] => customer1
    [1] => customer2
)

array_merge()

The array_merge() function combines two or more arrays.

$arr1 = ["red", "green"];
$arr2 = ["blue", "yellow"];
$arr3 = ["purple"];

$combined = array_merge($arr1, $arr2, $arr3);
print_r($combined);

Output:

Array
(
    [0] => red
    [1] => green
    [2] => blue
    [3] => yellow
    [4] => purple
)

array_slice()

Use array_slice() to extract a portion of an array.

$fruits = ["apple", "banana", "cherry", "date", "elderberry"];
$slice = array_slice($fruits, 1, 3);
print_r($slice);

Output:

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

🔍 Searching and Filtering

PHP provides powerful functions for searching and filtering array elements.

in_array()

The in_array() function checks if a value exists in an array.

$haystack = ["needle", "hay", "stack"];
$needle = "needle";

if (in_array($needle, $haystack)) {
    echo "Found the needle!";
} else {
    echo "Needle not found.";
}

Output:

Found the needle!

array_search()

array_search() searches for a value in an array and returns its key if found.

$fruits = ["apple" => "red", "banana" => "yellow", "cherry" => "red"];
$key = array_search("yellow", $fruits);

echo "The yellow fruit is: $key";

Output:

The yellow fruit is: banana

array_filter()

Use array_filter() to filter elements of an array using a callback function.

$numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

$even_numbers = array_filter($numbers, function($n) {
    return $n % 2 == 0;
});

print_r($even_numbers);

Output:

Array
(
    [1] => 2
    [3] => 4
    [5] => 6
    [7] => 8
    [9] => 10
)

🔄 Array Transformation

These functions help transform array elements or the entire array structure.

array_map()

array_map() applies a callback function to each element of an array.

$numbers = [1, 2, 3, 4, 5];

$squared = array_map(function($n) {
    return $n * $n;
}, $numbers);

print_r($squared);

Output:

Array
(
    [0] => 1
    [1] => 4
    [2] => 9
    [3] => 16
    [4] => 25
)

array_reduce()

The array_reduce() function reduces an array to a single value using a callback function.

$numbers = [1, 2, 3, 4, 5];

$sum = array_reduce($numbers, function($carry, $item) {
    return $carry + $item;
}, 0);

echo "Sum of numbers: $sum";

Output:

Sum of numbers: 15

array_flip()

array_flip() exchanges all keys with their associated values in an array.

$fruits = ["apple" => "red", "banana" => "yellow", "cherry" => "red"];
$flipped = array_flip($fruits);

print_r($flipped);

Output:

Array
(
    [red] => cherry
    [yellow] => banana
)

🔢 Sorting Arrays

PHP offers various functions to sort arrays based on different criteria.

sort() and rsort()

sort() sorts an array in ascending order, while rsort() sorts in descending order.

$numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3];

sort($numbers);
echo "Sorted ascending: " . implode(", ", $numbers) . "\n";

rsort($numbers);
echo "Sorted descending: " . implode(", ", $numbers);

Output:

Sorted ascending: 1, 1, 2, 3, 3, 4, 5, 5, 6, 9
Sorted descending: 9, 6, 5, 5, 4, 3, 3, 2, 1, 1

asort() and arsort()

These functions sort associative arrays. asort() sorts by value in ascending order, while arsort() sorts by value in descending order.

$fruits = ["banana" => 3, "apple" => 1, "cherry" => 5];

asort($fruits);
echo "Sorted by value ascending:\n";
print_r($fruits);

arsort($fruits);
echo "Sorted by value descending:\n";
print_r($fruits);

Output:

Sorted by value ascending:
Array
(
    [apple] => 1
    [banana] => 3
    [cherry] => 5
)
Sorted by value descending:
Array
(
    [cherry] => 5
    [banana] => 3
    [apple] => 1
)

ksort() and krsort()

These functions sort associative arrays by key. ksort() sorts in ascending order, while krsort() sorts in descending order.

$ages = ["John" => 35, "Alice" => 22, "Bob" => 28];

ksort($ages);
echo "Sorted by key ascending:\n";
print_r($ages);

krsort($ages);
echo "Sorted by key descending:\n";
print_r($ages);

Output:

Sorted by key ascending:
Array
(
    [Alice] => 22
    [Bob] => 28
    [John] => 35
)
Sorted by key descending:
Array
(
    [John] => 35
    [Bob] => 28
    [Alice] => 22
)

🔑 Array Keys and Values

These functions help work with array keys and values separately.

array_keys() and array_values()

array_keys() returns all the keys of an array, while array_values() returns all the values.

$fruit_colors = ["apple" => "red", "banana" => "yellow", "cherry" => "red"];

$keys = array_keys($fruit_colors);
$values = array_values($fruit_colors);

echo "Keys: " . implode(", ", $keys) . "\n";
echo "Values: " . implode(", ", $values);

Output:

Keys: apple, banana, cherry
Values: red, yellow, red

array_key_exists()

Use array_key_exists() to check if a key exists in an array.

$user = ["name" => "John", "age" => 30];

var_dump(array_key_exists("name", $user));
var_dump(array_key_exists("email", $user));

Output:

bool(true)
bool(false)

💡 Advanced Array Operations

Let's explore some more advanced array functions that can be incredibly useful in complex scenarios.

array_diff() and array_intersect()

array_diff() computes the difference between arrays, while array_intersect() computes the intersection.

$array1 = ["apple", "banana", "cherry"];
$array2 = ["banana", "date", "elderberry"];

$diff = array_diff($array1, $array2);
$intersect = array_intersect($array1, $array2);

echo "Difference:\n";
print_r($diff);

echo "Intersection:\n";
print_r($intersect);

Output:

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

array_unique()

The array_unique() function removes duplicate values from an array.

$numbers = [1, 2, 2, 3, 4, 4, 5];
$unique = array_unique($numbers);

print_r($unique);

Output:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
)

array_chunk()

Use array_chunk() to split an array into chunks of a specified size.

$numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$chunks = array_chunk($numbers, 3);

print_r($chunks);

Output:

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )
    [1] => Array
        (
            [0] => 4
            [1] => 5
            [2] => 6
        )
    [2] => Array
        (
            [0] => 7
            [1] => 8
            [2] => 9
        )
)

🚀 Putting It All Together: A Real-World Example

Let's combine several of these array functions to solve a more complex problem. Imagine we have a list of products with their prices, and we want to perform various operations on this data.

$products = [
    ["name" => "Laptop", "price" => 999.99],
    ["name" => "Smartphone", "price" => 499.99],
    ["name" => "Tablet", "price" => 299.99],
    ["name" => "Smartwatch", "price" => 199.99],
    ["name" => "Headphones", "price" => 99.99]
];

// 1. Extract product names
$product_names = array_column($products, "name");
echo "Product names: " . implode(", ", $product_names) . "\n";

// 2. Calculate total price
$total_price = array_reduce($products, function($carry, $item) {
    return $carry + $item["price"];
}, 0);
echo "Total price: $" . number_format($total_price, 2) . "\n";

// 3. Find products over $300
$expensive_products = array_filter($products, function($product) {
    return $product["price"] > 300;
});
echo "Products over $300:\n";
print_r($expensive_products);

// 4. Apply 10% discount to all prices
$discounted_products = array_map(function($product) {
    $product["price"] *= 0.9;
    return $product;
}, $products);
echo "Products with 10% discount:\n";
print_r($discounted_products);

// 5. Sort products by price (highest to lowest)
usort($products, function($a, $b) {
    return $b["price"] <=> $a["price"];
});
echo "Products sorted by price (highest to lowest):\n";
print_r($products);

Output:

Product names: Laptop, Smartphone, Tablet, Smartwatch, Headphones
Total price: $2099.95
Products over $300:
Array
(
    [0] => Array
        (
            [name] => Laptop
            [price] => 999.99
        )
    [1] => Array
        (
            [name] => Smartphone
            [price] => 499.99
        )
)
Products with 10% discount:
Array
(
    [0] => Array
        (
            [name] => Laptop
            [price] => 899.991
        )
    [1] => Array
        (
            [name] => Smartphone
            [price] => 449.991
        )
    [2] => Array
        (
            [name] => Tablet
            [price] => 269.991
        )
    [3] => Array
        (
            [name] => Smartwatch
            [price] => 179.991
        )
    [4] => Array
        (
            [name] => Headphones
            [price] => 89.991
        )
)
Products sorted by price (highest to lowest):
Array
(
    [0] => Array
        (
            [name] => Laptop
            [price] => 999.99
        )
    [1] => Array
        (
            [name] => Smartphone
            [price] => 499.99
        )
    [2] => Array
        (
            [name] => Tablet
            [price] => 299.99
        )
    [3] => Array
        (
            [name] => Smartwatch
            [price] => 199.99
        )
    [4] => Array
        (
            [name] => Headphones
            [price] => 99.99
        )
)

This example demonstrates how powerful PHP's array functions can be when used together to manipulate and analyze data.

🎓 Conclusion

PHP's built-in array functions provide a robust toolkit for manipulating arrays efficiently. From basic operations like adding and removing elements to more complex tasks like filtering, mapping, and reducing, these functions can significantly simplify your code and improve its readability.

Remember, the key to mastering these functions is practice. Try incorporating them into your projects, and you'll soon find yourself writing more elegant and efficient PHP code. Happy coding, and may your arrays always be well-manipulated! 🚀🐘

As you continue your PHP journey with CodeLucky.com, keep exploring these array functions and discover how they can make your coding life easier and more productive. The world of PHP arrays is vast and exciting – embrace it and watch your programming skills soar! 🌟