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.
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"; }