list() is sort of an operator, forming an lvalue (a
value that can be used on the left side of an expression) out of a set of
variables, which represents itself as a new entity similar to an element of a
multidimensional array. As arguments, it takes a list of variables. When
something is being assigned to it (a list of variables or an array element), the
list of variables given as arguments to the list() operator is parsed
from left to right. These arguments are then assigned a corresponding value from
the rvalue (a value that's used on the right side of an expression). This is
best explained using a code example:
$result = mysql_db_query($mysql_handle, $mysql_db,
"SELECT car_type, car_color, car_speed
FROM cars WHERE car_id=$car_id);
list($car_type, $car_color, $car_speed) = mysql_fetch_row($result);
Note: This code is used here strictly for example. It's
not a good idea to implement code like this in real-life programs, as it relies
on the fields remaining in the same order. If you change the field ordering, you
have to change the variable ordering in the list() statement as well.
Using associative arrays and manual value extraction imposes an overhead in
programming but results in better code stability. Code as shown above should
only be implemented for optimization purposes.
$my_array = array("Element 1", "Element 2", "Element 3");
while(list($key, $value) = each($my_array))
print("Key: $key, Value: $value<br>");
You can also use each() to show the elements that
each() itself returns:
$my_array = array("Element 1", "Element 2", "Element 3"); while($four_element_array = each($my_array)) { while(list($key, $value) = each($four_element_array)) print("Key $key, Value $value<br>"); }Using a simple for() loop is not enough for arrays of this kind; it accesses indices that don't have a value assigned. If PHP provides a stricter environment, this would result in an exception and immediate termination of the script. Therefore, whenever you're unsure about the contents and consistency of arrays, you're doomed to using each().
my array = array(0 => "Landon", 3 => "Graeme", 4 => "Tobias", 10 => "Till");
for($i = 0; $i < count($my_array); $i++)
print("Element $i: $my_array[$i]<br>");