"Puma","code" => "p01","name" => "Puma One"), array("...">

How do I group one value of an array

Example of my array

$options = array( array("brand" => "Puma","code" => "p01","name" => "Puma One"), array("brand" => "Puma","code" => "p02","name" => "Puma Two"), array("brand" => "Puma","code" => "p03","name" => "Puma Three"), array("brand" => "Nike","code" => "n01","name" => "Nike One"), array("brand" => "Nike","code" => "n02","name" => "Nike Two"), array("brand" => "Nike","code" => "n03","name" => "Nike Three"), array("brand" => "Nike","code" => "n04","name" => "Nike Four"), array("brand" => "Adidas","code" => "a01","name" => "Adidas One"), array("brand" => "Adidas","code" => "a02","name" => "Adidas Two"), array("brand" => "Adidas","code" => "a03","name" => "Adidas Three"), array("brand" => "Adidas","code" => "a04","name" => "Adidas Four"), array("brand" => "Adidas","code" => "a05","name" => "Adidas Five"), array("brand" => "Adidas","code" => "a06","name" => "Adidas Six") ); 

How to generate this array as

 <select name="products" id="products"> <optgroup label="Puma"> <option value="p01">Puma One</option> <option value="p02">Puma Two</option> <option value="p03">Puma Three</option> </optgroup> ....... <optgroup label="Adidas"> <option value="a01">Adidas One</option> <option value="a02">Adidas Two</option> <option value="a03">Adidas Three</option> ....... </optgroup> </select> 

Or you can suggest the best array according to my choice. Let me know.

+6
php multidimensional-array
source share
1 answer

You can create another array under the label:

 $newOptions = array(); foreach ($options as $option) { $brand = $option['brand']; $code = $option['code']; $name = $option['name']; $newOptions[$brand][$code] = $name; } 

This will lead to the creation of such an array:

 $newOptions = array( 'Puma' => array('p01' => 'Puma One', 'p02' => 'Puma Two'), 'Nike' => array('n01' => 'Nike One', 'n02' => 'Nike Two'), ... ); 

If you can directly format your array this way, you can skip the first step.

Then iterate over this new array and print the parameters:

 foreach ($newOptions as $brand => $list) { echo "<optgroup label=\"$brand\">\n"; foreach ($list as $code => $name) echo "<option value=\"$code\">$name</option>\n"; echo "</optgroup>\n"; } 
+12
source share

All Articles