optgroup в html_select

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО

Подскажите как функционирует optgroup в html_select?

#1 16 мая 2016 в 15:06
Привет.

В функции:

  1.  
  2. function html_select($name, $items, $selected = '', $attributes = array()){
  3.  
  4. $attr_str = html_attr_str($attributes);
  5. $class = isset($attributes['class']) ? ' class="'.$attributes['class'].'"' : '';
  6. $html = '<select name="'.$name.'" '.$attr_str.$class.'>'."\n";
  7.  
  8. $optgroup = false;
  9.  
  10. if($items && is_array($items)){
  11. foreach($items as $value => $title){
  12.  
  13. if(is_array($title)){
  14. if($optgroup !== false){
  15. $html .= "\t".'</optgroup>'."\n";
  16. $optgroup = false;
  17. }
  18. $optgroup = true;
  19. $html .= "\t".'<optgroup label="'.htmlspecialchars($title[0]).'">'."\n";
  20. continue;
  21. }
  22.  
  23. $sel = ((string) $selected === (string) $value) ? 'selected' : '';
  24. $html .= "\t".'<option value="'.htmlspecialchars($value).'" '.$sel.'>'.htmlspecialchars($title).'</option>'."\n";
  25. }
  26. }
  27.  
  28. if($optgroup !== false){
  29. $html .= "\t".'</optgroup>'."\n";
  30. }
  31.  
  32. $html .= '</select>'."\n";
  33. return $html;
  34.  
  35. }
  36.  
Есть пункты для создания групп optgroup.

По коду я понял, что если $title является массивом, то формируется optgroup, но как это реализовать не могу понять.

Прошу посвятить)
#2 16 мая 2016 в 17:29
Это от куда вообще? Что то знакомое.
#3 16 мая 2016 в 17:58
Массив должен быть по такому принципу:

  1. array (
  2. [opt0] => Array
  3. (
  4. [0] => Название optgroup0
  5. )
  6.  
  7. [20] => Запись в optgroup0
  8. [opt1] => Array
  9. (
  10. [0] => Название optgroup1
  11. )
  12.  
  13. [19] => Запись в optgroup1
  14. [18] => Еще запись в optgroup1
  15. [16] => И еще запись в optgroup1
  16. [opt2] => Array
  17. (
  18. [0] => Название optgroup2
  19. )
  20.  
  21. [17] => Запись в optgroup2
  22. )
#4 16 мая 2016 в 18:43


Массив должен быть по такому принципу:

  1. array (
  2. [opt0] => Array
  3. (
  4. [0] => Название optgroup0
  5. )
  6.  
  7. [20] => Запись в optgroup0
  8. [opt1] => Array
  9. (
  10. [0] => Название optgroup1
  11. )
  12.  
  13. [19] => Запись в optgroup1
  14. [18] => Еще запись в optgroup1
  15. [16] => И еще запись в optgroup1
  16. [opt2] => Array
  17. (
  18. [0] => Название optgroup2
  19. )
  20.  
  21. [17] => Запись в optgroup2
  22. )

Fuze

Благодарю!
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.