PHP Programming/arrays
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 an array in the scheme of:
$foo = bar()
For example, to set the array up 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
[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); ?>
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
<?php 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" ?>
Manufacturer: <b>Toyota</b><br /> Brand: <b>Celica</b><br /> Colour: <b>black</b><br /> Year Manufactured: <b>1991</b><br />
Manufacturer: Toyota Brand: Celica Colour: black Year Manufactured: 1991
[edit] Multidimensional Arrays
Elements in an array can also be an array, allowing for multidimensional arrays. An example, in accordance 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 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).
[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