I have this array/object output from mysql database:

Array
(
    [0] => stdClass Object
        (
            [id] => 1
            [lang_id] => 1
            [name] => attr one
            [attribute_group_id] => 1
            [sort_order] => 1
            [in_use] => 1
        )
    [1] => stdClass Object
        (
            [id] => 2
            [lang_id] => 1
            [name] => attr two
            [attribute_group_id] => 1
            [sort_order] => 2
            [in_use] => 0
        )
    [2] => stdClass Object
        (
            [id] => 3
            [lang_id] => 1
            [name] => attr three
            [attribute_group_id] => 1
            [sort_order] => 3
            [in_use] => 0
        )
    [3] => stdClass Object
        (
            [id] => 4
            [lang_id] => 1
            [name] => attr four
            [attribute_group_id] => 2
            [sort_order] => 1
            [in_use] => 1
        )
)

I need to show select box for each attribute_group_id like this:

//for attribute group id 1
<select name="">
   <option value="1">attr one</option>
   <option value="2">attr two</option>
   <option value="3">attr three</option>
</select>

//for attribute group id 2
<select name="">
   <option value="4">attr four</option>
</select>

in action,my database output is true and work for this html code? if yes, how do can i generate this html code from my database output?!

    Replaced back-ticks with [code]...[/code] tags for better readability. Please use them for code blocks in future posts. 🙂

      If I'm following things correctly (not guaranteed), I feel like I'd want to end up with an array with extra dimension, either adjusting whatever code creates this array, or building a new array from this one. Basically I'd want a key based on the attribute_group_id, maybe something like (untested)...

      $newArray = [];
      foreach($startingArray as $data) {
        $newArray[$data->attribute_group_id][] = $data;
      }
      

      Then in this case, you could loop on $newArray, and within that loop do another foreach() loop on that "chunk" to build your HTML form elements.

        I assumed a few things about your question. Like, I assumed that the data comes out already sorted properly and doesn't require any additional sorting. I also overlooked that your select inputs have empty name attributes. But this code might do something close to what you want.

        <?php
        
        $my_array = array(
            "0" => array(
                    "id" => 1,
                    "lang_id" => 1,
                    "name" => "attr one",
                    "attribute_group_id" => 1,
                    "sort_order" => 1,
                    "in_use" => 1
            ),
            "1" => array(
                    "id" => 2,
                    "lang_id" => 1,
                    "name" => "attr two",
                    "attribute_group_id" => 1,
                    "sort_order" => 2,
                    "in_use" => 0
            ),
            "2" => array(
                    "id" => 3,
                    "lang_id" => 1,
                    "name" => "attr three",
                    "attribute_group_id" => 1,
                    "sort_order" => 3,
                    "in_use" => 0
            ),
            "3" => array(
                    "id" => 4,
                    "lang_id" => 1,
                    "name" => "attr four",
                    "attribute_group_id" => 2,
                    "sort_order" => 1,
                    "in_use" => 1
                )
        );
        
        foreach($my_array as $key => $arr) {
        	$my_array[$key] = (object)$arr;
        }
        
        
        $prev_attr_group_id = NULL;
        echo '<select name="">' . "\n";
        foreach($my_array as $obj) {
        	$agid = $obj->attribute_group_id;
        	if (!is_null($prev_attr_group_id) && $agid != $prev_attr_group_id) {
        		echo '</select>' . "\n";
        		echo '<select name="">' . "\n";
        	}
        	echo '  <option value="' . $obj->id . '">' . $obj->name . '</option>' . "\n";
        
        	$prev_attr_group_id = $agid;
        }
        echo '</select>' . "\n";
        Write a Reply...