PHP Programming/Arrays

From Wikibooks, open books for an open world
Jump to navigation Jump to search

Arrays are sets of data that can be defined in a PHP Script. Arrays can contain other arrays inside of them without any restriction (hence building multidimensional arrays). Arrays can be referred to as tables or hashes.

Syntax[edit | edit source]

Arrays can be created in two ways. The first involves using the function array. The second involves using square brackets.

The array function method[edit | edit source]

In the array function method, you create an array in the scheme of:

$foo = bar()

For example, to set up the array to make the keys sequential numbers (Example: "0, 1, 2, 3"), you use:

  $foobar = array($foo, $bar);

This would produce the array like this:

  $foobar[0] = $foo;
  $foobar[1] = $bar;

It is also possible to define the key value:

 $foobar = array('foo' => $foo, 'bar' => $bar);

This would set the array like this:

  $foobar['foo'] = $foo;
  $foobar['bar'] = $bar;

The square brackets method[edit | edit source]

The square brackets method allows you to set up by directly setting the values. For example, to make $foobar[1] = $foo, all you need to do is:

 $foobar[1] = $foo;

The same applies for setting the key value:

 $foobar['foo'] = $foo;

Examples of arrays[edit | edit source]

Example #1[edit | edit source]

This example sets and prints arrays.

PHP Code:

  $array = array("name"=>"Toyota","type"=>"Celica","colour"=>"black","manufactured"=>"1991");
  $array2 = array("Toyota","Celica","black","1991");
  $array3 = array("name"=>"Toyota","Celica","colour"=>"black","1991");

PHP Output:

    [name] => Toyota
    [type] => Celica
    [colour] => black
    [manufactured] => 1991
    [0] => Toyota
    [1] => Celica
    [2] => black
    [3] => 1991
    [name] => Toyota
    [0] => Celica
    [colour] => black
    [1] => 1991

HTML Render:

Array ( [name] => Toyota [type] => Celica [colour] => black [manufactured] => 1991 ) Array ( [0] => Toyota [1] => Celica [2] => black [3] => 1991 ) Array ( [name] => Toyota [0] => Celica [colour] => black [1] => 1991 )

Example #2[edit | edit source]

The following example will output the identical text as Example #1:

  $array['name'] = "Toyota";
  $array['type'] = "Celica";
  $array['colour'] = "black";
  $array['manufactured'] = "1991";

  $array2[] = "Toyota";
  $array2[] = "Celica";
  $array2[] = "black";
  $array2[] = "1991";

  $array3['name'] = "Toyota";
  $array3[] = "Celica";
  $array3['colour'] = "black";
  $array3[] = "1991";


Example #3[edit | edit source]

Using the Example #1 and Example #2 above, now you can try and use arrays the same way as normal variables:

PHP Code:

  echo "Manufacturer: {$array['name']} \n";
  echo "Brand: &lt;b&gt;{$array2['1']}&lt;/b&gt;&lt;br /&gt;\n";
  echo "Colour: &lt;b&gt;".$array3['colour']."&lt;/b&gt;&lt;br /&gt;\n";
  echo "Year Manufactured: &lt;b&gt;".$array3[1]."&lt;/b&gt;&lt;br /&gt;\n"

PHP Output:

 Manufacturer: <b>Toyota</b><br />
  Brand: <b>Celica</b><br />
  Colour: <b>black</b><br />
  Year Manufactured: <b>1991</b><br />

HTML Render:

 Manufacturer: Toyota
 Brand: Celica
 Colour: black
 Year Manufactured: 1991

Multidimensional arrays[edit | edit source]

Elements in an array can also be an array, allowing for multidimensional arrays. An example, in accordance with the motoring examples above, is:

$cars = array(
  "car1" => array("make" => "Toyota","colour" => "Green","year" => 1999,"engine_cc" => 1998),
  "car2" => array("make" => "BMW","colour" => "RED","year" => 2005,"engine_cc" => 2400),
  "car3" => array("make" => "Renault","colour" => "White","year" => 1993,"engine_cc" => 1395),

In this example, if you were to use:

  echo "$cars['car1']['make']<br>";
  echo "$cars['car3']['engine_cc']";

The output would be:


Array functions[edit | edit source]

There are dozens of array manipulation functions. Before implementing your own, make sure it doesn't already exist as a PHP function in Array functions (PHP manual entry).

Sorting[edit | edit source]


$array = array("name"=>"Toyota", "type"=>"Celica", "colour"=>"black", "manufactured"=>"1991");

array_multisort($array, SORT_ASC);
// array(4) { ["manufactured"]=> string(4) "1991" ["type"]=> string(6) "Celica" ["name"]=> string(6) "Toyota" ["colour"]=> string(5) "black" }
// The upper cases are sorted before the lowercases.

// array(4) { ["colour"]=> string(5) "black" ["name"]=> string(6) "Toyota" ["type"]=> string(6) "Celica" ["manufactured"]=> string(4) "1991" }

// array(4) { ["manufactured"]=> string(4) "1991" ["type"]=> string(6) "Celica" ["name"]=> string(6) "Toyota" ["colour"]=> string(5) "black" }

// array(4) { [0]=> string(4) "1991" [1]=> string(6) "Celica" [2]=> string(6) "Toyota" [3]=> string(5) "black" }

Array traversal[edit | edit source]

In various circumstances, you will need to visit every array element and perform a task upon it.

The simplest and the most widely used method for this is the foreach operator that loops through the whole array and works individually with each key/item couple. If a more complex way of traversing the array is needed, the following functions operate using the internal array pointer:

  • reset - sets the internal pointer to the first element and returns the first element
  • prev - sets the internal pointer to the previous element and returns it
  • current - returns the current element; does not change the internal pointer
  • next - sets the internal pointer to the next element and returns it
  • each - returns the current element; then sets the internal pointer to the next element
  • end - sets the internal pointer to the last element and returns the last element
// Using an array's iterator to print its values in reverse order
$my_array = array('a', 'b', 'c');
while ($i = current($my_array)) {
  echo $i."\n";

Another possibility is defining a function and applying it to each array element via one of the following functions:

  • array_walk - applies a function to each array element
  • array_walk_recursive - same, but if the element is itself an array, it will traverse that array too

External links[edit | edit source]