Book HomePHP CookbookSearch this book

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.



Library Navigation Links

Copyright © 2003 O'Reilly & Associates. All rights reserved.