Recipe 4.3 Storing Multiple Elements per Key in an Array
4.3.1 Problem
You want to associate
multiple elements with a single key.
4.3.2 Solution
Store the multiple elements in an array:
$fruits = array('red' => array('strawberry','apple'),
'yellow' => array('banana'));
Or, use an object:
while ($obj = mysql_fetch_object($r)) {
$fruits[ ] = $obj;
}
4.3.3 Discussion
In PHP, keys are unique per array, so you
can't associate more than one entry in a key without
overwriting the old value. Instead, store your values in an
anonymous
array:
$fruits['red'][ ] = 'strawberry';
$fruits['red'][ ] = 'apple';
$fruits['yellow'][ ] = 'banana';
Or, if you're processing items in a loop:
while (list($color,$fruit) = mysql_fetch_array($r)) {
$fruits[$color][ ] = $fruit;
}
To print the entries, loop through the array:
foreach ($fruits as $color=>$color_fruit) {
// $color_fruit is an array
foreach ($color_fruit as $fruit) {
print "$fruit is colored $color.<br>";
}
}
Or use the pc_array_to_comma_string(
) function from Recipe 4.10.
foreach ($fruits as $color=>$color_fruit) {
print "$color colored fruits include " .
pc_array_to_comma_string($color_fruit) . "<br>";
}
4.3.4 See Also
Recipe 4.10 for how to print arrays with
commas.
|