Programming:PHP/arrays
From Wikibooks, the open-content textbooks collection
Return to PHP.
Contents |
[edit] Arrays
Arrays are sets of data which 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.
[edit] Syntax
Arrays can be created in two ways. The first involves using the function array. The second involves using square brackets.
[edit] The array function method
In the array function method, you create a array in the scheme of
$foo = bar()
. For example, to set the array up to make the keys sequencial 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
[edit] The square brackets method
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;
[edit] Examples of Arrays
[edit] Example #1
<?php $array = array("name"=>"Toyota","type"=>"Celica","colour"=>"black","manufactured"=>"1991"); $array2 = array("Toyota","Celica","black","1991"); $array3 = array("name"=>"Toyota","Celica","colour"=>"black","1991"); print_r($array); print_r($array2); print_r($array3); ?>
This Example will output this:
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
)
[edit] Example #2
The following example will output the identical text as #Example #1:
<?php $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"; print_r($array); print_r($array2); print_r($array3); ?>
[edit] Example #3
Using the Example #1 and Example #2 above, now you can try and use arrays the same way as normal variables:
echo "Manufacturer: <b>{$array['name']}</b><br />\n"; echo "Brand: <b>{$array2['1']}</b><br />\n"; echo "Colour: <b>".$array3['colour']."</b><br />\n"; echo "Year Manufactured: <b>".$array3[1]."</b><br />\n"
Which will output this:
Manufacturer: <b>Toyota</b><br /> Brand: <b>Celica</b><br /> Colour: <b>black</b><br /> Year Manufactured: <b>1991</b><br />
Note to contributors: This is an example of what the script outputs, not an example of how you would see the actual page. So don't edit and change to what the user actually sees (a rendered HTML page, not XHTML because the <b> element does not exist in XHTML)!
[edit] Multidimensional Arrays
Elements in an array can also be an array, allowing for multidimensional arrays. An example, keeping with the motoring examples above, is:
<?php $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:
<?php echo "$cars['car1']['make']<br>"; echo "$cars['car3']['engine_cc']"; ?>
The output would be:
Toyota
1395
[edit] Array Functions
There exist 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).
[edit] Array traversal
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 which 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
<?php // using an array's iterator to print its values in reverse order $my_array = array('a', 'b', 'c'); end($my_array); while($i = current($my_array)) { echo $i."\n"; prev($my_array); } ?>
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

