PHP Array Destructuring

Summary: in this tutorial, you’ll learn how to use PHP array destructuring to assign elements of an array to multiple variables.

Introduction to the PHP array destructuring #

Suppose that you have an array returned by a function parse_url():

<?php

$urls = parse_url('https://www.phptutorial.net/');
var_dump($urls);Code language: PHP (php)

Try it

Output:

array(3) {
    ["scheme"]=>  string(5) "https"
    ["host"]=> string(19) "www.phptutorial.net"
    ["path"]=> string(1) "/"
}Code language: PHP (php)

To assign the elements of the array to multiple variables, you can use the list() construct like this:

<?php

list('scheme' => $scheme,
    'host' => $host,
    'path'=>$path
) = parse_url('https://www.phptutorial.net/');

var_dump($scheme, $host, $path);Code language: PHP (php)

Try it

Output:

string(5) "https"
string(19) "www.phptutorial.net"
string(1) "/"Code language: PHP (php)

PHP 7.1 introduced a new way of unpacking the array’s elements into variables. It’s called array destructuring:

<?php

[
    'scheme' => $scheme,
    'host' => $host,
    'path'=>$path
] = parse_url('https://www.phptutorial.net/');

var_dump($scheme, $host, $path);Code language: PHP (php)

Try it

Output:

string(5) "https"
string(19) "www.phptutorial.net"
string(1) "/"Code language: PHP (php)

Like the list(), the array destructuring works with both indexed and associative arrays. For example:

<?php

$person = ['John','Doe'];
[$first_name, $last_name] = $person;

var_dump($first_name, $last_name);Code language: PHP (php)

Try it

Output:

string(4) "John"
string(3) "Doe"Code language: PHP (php)

Skipping elements #

The array destructuring syntax also allows you to skip any elements. For example, the following skips the second element of the array:

<?php

$person = ['John','Doe', 24];
[$first_name, , $age] = $person;

var_dump($first_name, $age);Code language: PHP (php)

Try it

Output:

string(4) "John"
int(24)Code language: PHP (php)

Swapping variables #

To swap the values of two variables, you often use a temporary variable like this:

<?php

$x = 10;
$y = 20;

// swap variables
$tmp = $x;
$x = $y;
$y = $tmp;

var_dump($x, $y);Code language: PHP (php)

Try it

Now, you can use the array destructuring syntax to make the code shorter:

<?php

$x = 10;
$y = 20;

// swap variables
[$x, $y] = [$y, $x];

var_dump($x, $y);Code language: PHP (php)

Try it

Parsing an array returned from a function #

Many functions in PHP return an array. The array destructuring allows you to parse an array returned from a function. For example:

<?php

[
    'dirname' => $dirname,
    'basename' => $basename
] = pathinfo('c:\temp\readme.txt');


var_dump($dirname, $basename);Code language: PHP (php)

Try it

Output:

string(7) "c:\temp"
string(10) "readme.txt"Code language: PHP (php)

Summary #

  • Use the PHP array destructuring to unpack elements of an array to variables.
Did you find this tutorial useful?