PHP arrays tutorial: Understand PHP arrays in 5 minutes
Tags: php, programming, tutorial, productivity
Published: 2022-08-26 21:28:16

In computer science, an array is a data structure that stores multiple values in a single variable. Think of this as a **list of values**. Arrays are a powerful tool for storing variables that you can access easily, as you access values by referring to their index number.

In this tutorial, we will introduce you to PHP arrays. We'll show you how to write them and work with them. We'll wrap up with a few hands-on problems. 

**Today's tutorial at a glance:**
* [What are arrays in PHP?](#what)
* [How to declare arrays in PHP](#how)
* [PHP array functions](#func)
* [Hands-on PHP array challenges](#hands)
* [What to learn next](#next)

<a name="what"></a>

## What are arrays in PHP?

Simply put, an array in PHP is a list, much like how in In JavaScript, an array is a list of values. For example, you could create an array of integers, like `[1, 2, 3, 4, 5]`, or of mixed data types, like `[false, 40, 'purple', $object, 'puppy']`. 

This makes it possible to hold multiple values under a shared name that can be accessed by referring to an index number, with the first element at index 0.

![Arrays](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7sg7l8eygho30lz0f6wc.png)

As you can see, the total number of elements in an array is the length of an array. With arrays, length is dynamic and can be changed over time.

PHP treats arrays a bit differently than you might be used to. In PHP, there are multiple kinds of arrays that keep different data types. PHP offers more structured arrays where we can keep sets of “key-value” pairs. 

Here are three types of arrays we can use in PHP:
* **Indexed/numeric arrays:** arrays with a numeric index
* **Associative arrays:** arrays with named keys
* **Multidimensional arrays:** arrays that hold one or more arrays

Associative arrays in PHP give us more context and information, making it very useful for web development and other programming needs. **All PHP arrays** are associative in nature, and you may already be used to this style. 

> In [Python](https://www.educative.io/blog/python-faq-answer-common-python-questions?eid=5082902844932096), for example, these are called dictionaries, and in [JavaScript](https://www.educative.io/blog/javascript-oop-primer?eid=5082902844932096), we could code the same behavior with objects. 

<a name="how"></a>

## How to declare arrays in PHP

Before the release of PHP 5.4, we create a new array using the `array()` function. 

```
<?php
$foo = array(1, 2, 3); // An array of integers created using array fucntion
$bar = ["A", true, 123 => 5]; // Short array syntax, PHP 5.4+
echo $bar[0]; // Returns "A"
echo "\n";
echo $bar[1]; // Returns 1 for true
echo "\n";
echo $bar[123]; // Returns 5
// echo $bar[1234]; // uncommenting this line will give an error because 1234 is inaccessable
?>

-->
A
1
5
```
> **Note:** We can also declare them with square brackets `[ ]`. The comma after the last element is optional, and it is usually done for single-line arrays like `array(1, 2)`.

The PHP `list()` function can also be used to assign variables in a shorter way.

```php
// define array
$array = ['a', 'b', 'c'];
 
// without list()
$a = $array[0];
$b = $array[1];
$c = $array[2];
 
// with list()
list($a, $b, $c) = $array;
```

> **Tip:** `list()` also works well with `foreach` to make the construction easier.
> ```php
>$arrays = [[1, 2], [3, 4], [5, 6]];
> 
>foreach ($arrays as list($a, $b)) {
>    $c = $a + $b;
>    echo($c . ', '); // 3, 7, >11,
>}
>```

### Indexed/Numeric Arrays

Numeric or indexed arrays can store numbers, strings, or objects as array elements, and their index is represented by a number. Take a look at this code example to understand its syntax and run it to see the output.

```
<html>
   <body>
   
      <?php
         /* First way to create array. */
         $numbers = array( 1, 2, 3, 4, 5);
         
         foreach( $numbers as $value ) {
            echo "Value is $value <br />";
         }
         
         /* Second way to create array. */
         $numbers[0] = "one";
         $numbers[1] = "two";
         $numbers[2] = "three";
         $numbers[3] = "four";
         $numbers[4] = "five";
         
         foreach( $numbers as $value ) {
            echo "Value is $value <br />";
         }
      ?>
      
   </body>
</html>
```

### Associative Arrays 

As we discussed before, associated arrays are a lot like indexed arrays, but they are different in terms of their index. Associative arrays in PHP have their index as a string in order to create an association between key-value pairs.

For example, let's use employees' names as the keys in an associative array with salaries as the value.

```
<html>
   <body>
      
      <?php
         /* First way to create array. */
         $salaries = array("mark" => 2000, "janet" => 1000, "asma" => 500);
         
         echo "Salary of mark is ". $salaries['mark'] . "<br />";
         echo "Salary of janet is ".  $salaries['janet']. "<br />";
         echo "Salary of asma is ".  $salaries['asma']. "<br />";
         
         /* Second way to create array. */
         $salaries['mark'] = "high";
         $salaries['janet'] = "medium";
         $salaries['asma'] = "low";
         
         echo "Salary of mark is ". $salaries['mark'] . "<br />";
         echo "Salary of janet is ".  $salaries['janet']. "<br />";
         echo "Salary of asma is ".  $salaries['asma']. "<br />";
      ?>
   
   </body>
</html>
```

### Multidimensional Arrays 

In a multidimensional array, each element in the main array is also an array. Values in a multidimensional array are accessed using multiple indexes. The syntax declaration of 2-D arrays is as follows:

```php
 $arrayName = array(array(), array()......array())
```
Let's look at an example of a complex multidimensional array. It is an indexed array containing associative arrays.

```
<?php
// Define a multidimensional array
$economy = array(
    array(
        "country" => "Germany",
        "currency" => "Euro",
    ),
    array(
        "country" => "Switzerland",
        "currency" => "Swiss Franc",
    ),
    array(
        "country" => "England",
        "currency" => "Pound",
    )
);

echo "Currency of Germany is: " . $economy[0]["currency"]; // Access array at [0] index

?>

-->
Currency of Germany is: Euro
```

<a name="func"></a>

## PHP array functions

There are a lot of different things we can do to arrays in PHP. We use array functions to manipulate, modify, and use our arrays in a meaningful way. Let's look at some common operations. 

Below, we've listed 10 common array functions, but there are dozens more than you can use.

* `array_keys`: return all the keys of an array
* `in_array`: checks if a value exists in an array
* `array_reverse`: Return an array with elements in reverse order
* `array_unshift`: prepend one or more elements to the front of an array
* `array_pop`: remove the element off the end of array
* `array_push`: remove one or more elements onto the end of array
* `array_diff_assoc`: computes the difference of arrays with additional index check
* `array_map`: applies the callback to the elements of the given arrays
* `array_merge`: merge one or more arrays
* `array_filter`: filters array elements with a callback function

### Output a structured view of arrays

To print an array in a readable format we use the following: 
```
print_r($arrayName)
```
This will print our keys and their associated values. 

```
<?php
$fruits = array("Type"=>"Citrus",1=>"Orange",2=>"Grapefruit",3=>"Lemon");//initializing associative array
print_r($fruits);
?>

-->
Array
(
    [Type] => Citrus
    [1] => Orange
    [2] => Grapefruit
    [3] => Lemon
)
```

### Get the length of an array 

To print the length of our arrays, we can use the `count()` function.

```php
count ( Countable|array $value , int $mode = COUNT_NORMAL ) : int
```

```
<?php
$food = array('fruits' => array('orange', 'banana', 'apple'),
              'veggie' => array('carrot', 'collard', 'pea'));

// recursive count
echo count($food, COUNT_RECURSIVE); // output 8

// normal count
echo count($food); // output 2

?>

-->
82
```

### Accessing array elements

Array elements can be accessed using `array[key]`.

```
<?php
$array = array(
    "foo" => "bar",
    42    => 24,
    "multi" => array(
         "dimensional" => array(
             "array" => "foo"
         )
    )
);

var_dump($array["foo"]);
var_dump($array[42]);
var_dump($array["multi"]["dimensional"]["array"]);
?>

-->
string(3) "bar"
int(24)
string(3) "foo"
```

### Return all the values of an array

We can return the values of our array with the PHP function `array_values`. 

```php
array_values ( array $array ) : array
```

```
<?php
$array = array("size" => "M", "color" => "yellow");
print_r(array_values($array));
?>

-->
Array
(
    [0] => M
    [1] => yellow
)
```

### Looping through arrays

When working with arrays, it's common to iterate through an array and perform something on the elements, such as to add them or display them. The most common way to iterate through an array in PHP is using `foreach`. 

> You can also use a for loop, but `foreach` is generally easier to write and read.

```
foreach ($array as $key => $value) {
    echo "Key is $key.";
    echo "Value is $value.";
}
```

<a name="next"></a>

## What to learn next 

You should now have a good idea of how arrays work in PHP, and you’re ready to tackle more advanced concepts. Next, we recommend learning the following:
* Combining array functions
* Converting to arrays
* Indexed arrays without key
* Defining classes in PHP

To get started with these concepts and more, check out Educative’s course **[Learn PHP from Scratch.](https://www.educative.io/courses/learn-php-from-scratch?eid=5082902844932096)** This highly interactive course introduces you to fundamental concepts of PHP. It begins with a simple Hello world program and proceeds to cover common concepts such as Conditional Statements, and Loop Statements.

By the time you're done, you'll have a good grip on the basics of PHP and will be ready to study advanced concepts.

*Happy learning!*

### Continue reading about PHP and arrays on Educative
* [PHP Tutorial: Get started with PHP from scratch](https://www.educative.io/blog/php-tutorial-from-scratch?eid=5082902844932096)
* [Arrays in Java Tutorial: how to declare & initialize Java arrays](https://www.educative.io/blog/java-arrays-tutorial-delcare-initialize?eid=5082902844932096)
* [Data Structures 101: a tutorial on arrays in JavaScript](https://www.educative.io/blog/data-structures-arrays-javascript-tutorial?eid=5082902844932096)

### Start a discussion 
What do you want to learn next about PHP? Was this article helpful? Let us know in the comments below!