Numerically Indexed Arrays
These arrays are supported in most programming languages. In PHP, the indices start at zero by default, although you can alter this.
Initializing Numerically Indexed Arrays
To create the array shown in Figure 3.1, use the following line of PHP code:
$products = array( 'Tires', 'Oil',
'Spark Plugs' );
This will create an array called products containing the three values given'Tires', 'Oil', and 'Spark Plugs'. Note that, like echo, array() is actually a language construct rather than a function.
Depending on the contents you need in your array, you might not need to manually initialize them as in the preceding example.
If you have the data you need in another array, you can simply copy one array to another using the = operator.
If you want an ascending sequence of numbers stored in an array, you can use the range() function to automatically create the array for you. The following line of code will create an array called numbers with elements ranging from 1 to 10:
$numbers = range(1,10);
If you have the information stored in file on disk, you can load the array contents directly from the file. We'll look at this later in this chapter under the heading "Loading Arrays from Files."
If you have the data for your array stored in a database, you can load the array contents directly from the database. This is covered in Chapter 10, "Accessing Your MySQL Database from the Web with PHP."
You can also use various functions to extract part of an array or to reorder an array. We'll look at some of these functions later in this chapter, under the heading "Other Array Manipulations."
Accessing Array Contents
To access the contents of a variable, use its name. If the variable is an array, access the contents using the variable name and a key or index. The key or index indicates which stored values we access. The index is placed in square brackets after the name.
Type $products, $products, and $products to use the contents of the products array.
Element zero is the first element in the array. This is the same numbering scheme as used in C, C++, Java, and a number of other languages, but it might take some getting used to if you are not familiar with it.
As with other variables, array elements' contents are changed by using the = operator. The following line will replace the first element in the array 'Tires' with 'Fuses'.
$products = 'Fuses';
The following line could be used to add a new element'Fuses'to the end of the array, giving us a total of four elements:
$products = 'Fuses';
To display the contents, we could type:
echo "$products $products $products $products";
Note that while PHP's string parsing is pretty clever, you can confuse it. If you are having trouble with arrays or other variables not being interpreted correctly when embedded in a double-quoted string, you can put them outside quotes. The previous echo statement will work correctly, but in many of the more complex examples later in this chapter you will notice that the variables are outside the quoted strings.
Like other PHP variables, arrays do not need to be initialized or created in advance. They are automatically created the first time you use them.
The following code will create the same $products array:
$products = 'Tires'; $products = 'Oil'; $products = 'Spark Plugs';
If $products does not already exist, the first line will create a new array with just one element. The subsequent lines add values to the array.
Using Loops to Access the Array
Because the array is indexed by a sequence of numbers, we can use a for loop to more easily display the contents:
for ( $i = 0; $i<3; $i++ ) echo "$products[$i] ";
This loop will give similar output to the preceding code, but will require less typing than manually writing code to work with each element in a large array. The ability to use a simple loop to access each element is a nice feature of numerically indexed arrays. Associative arrays are not quite so easy to loop through, but do allow indexes to be meaningful.
We can also use the foreach loop, specially designed for use with arrays. In this example we could use it as follows:
foreach ($products as $current) echo $current.' ';
This stores each element in turn in the variable $current and prints it out.