PHP Arrays
Storing Multiple Elements per Key in an Array
Problem
You want to associate multiple elements with a single key.Solution
Store the multiple elements in an array:$fruits = array('red' => array('strawberry','apple'),
'yellow' => array('banana'));
Or use an object:
while ($obj = mysqli_fetch_assoc($r)) {
$fruits[] = $obj;
}
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 = array();
$fruits['red'][] = 'strawberry';
$fruits['red'][] = 'apple';
$fruits['yellow'][] = 'banana';
print_r($fruits);
This prints:
Array
(
[red] => Array
(
[0] => strawberry
[1] => apple
)
[yellow] => Array
(
[0] => banana
)
)
Or, if you’re processing items in a loop:
while (list($color,$fruit) = mysqli_fetch_assoc($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 array_to_comma_string() function:
foreach ($fruits as $color => $color_fruit) {
print "$color colored fruits include " .
array_to_comma_string($color_fruit) . "<br>";
}
No comments:
Post a Comment