4.2.1. ProblemYou want to associate multiple elements with a single key. 4.2.2. SolutionStore 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.2.3. DiscussionIn 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.9. foreach ($fruits as $color=>$color_fruit) { print "$color colored fruits include " . pc_array_to_comma_string($color_fruit) . "<br>"; } In PHP 5.0.0 and above, you don't need pc_array_range( ): just pass an increment to range( ) as a third argument: $odd = range(1, 52, 2); $even = range(2, 52, 2); 4.2.4. See AlsoRecipe 4.9 for how to print arrays with commas. |