PHP检查数组到数组或多维数组

i want to create HTML element with PHP functions. in this section i have select function to create select tag. for values i want to check if array is simple my function create simple select otherwise create optgroup for options.

my create select method :

$tag->select( 'myselect', 
                array(
                        '0'=>'please choose','1'=>'111','2'=>'222','3'=>'333'
                     ) , 
                '2', 
                array(
                        'class'=>'myClass','style'=>'width:10%;' 
                     )
             );

other use:

$tag->select( 'myselect', 
                    array( 'one'=>
                                array('0'=>'please choose','1'=>'111','2'=>'222','3'=>'333'),
                           'two'=>
                                array('0'=>'please choose','1'=>'111','2'=>'222','3'=>'333')
                         ) , 
                    '2', 
                    array(
                            'class'=>'myClass','style'=>'width:10%;' 
                         )
                ) ;

now in below function i want to check if array into array exist function must be create select group;

    public function select( $name, $values, $default='0', $attributs=[]){
        $options  = [];
        $selected = '';
        echo count($values);
        if ( count($values) == 1){
            foreach ($values as $value => $title) {
                if ( $value === $default ) $selected="selected='selected'";
                $options[] = "<option value = '$value' $selected>" . $title . '</option>'.PHP_EOL ;
                $selected = '';
            }
        }
        else{
            foreach ($values as $key => $value) {
                $options[] = "<optgroup label='$key'>";
                foreach ($value as $selectValue => $title) {

                    $options[] = "<option value = '$selectValue'>" . $title . '</option>'.PHP_EOL ;
                }
                $options[] = "</optgroup>";
            }
        }
        $selectTag = '<select ' . $this->setAttribute($attributs) . '>'.PHP_EOL;
        return $selectTag . implode($options, ' ') . '</select>';
    }

this function is not correct. how to resolve that? thanks.

Try this (hopefully helps you)

public function select( $name, $values, $default='0', $attributs=[]){
    $options  = [];
    $selected = '';
    echo count($values);
    foreach ($values as $key => $value) {
       if (!is_array($value)) {
          if ( $key === $default ) $selected="selected='selected'";
          $options[] = "<option value = '$key' $selected>" . $value . '</option>'.PHP_EOL ;
          $selected = '';
       }
       else {
          $options[] = "<optgroup label='$key'>";
          foreach ($value as $selectValue => $title) {
             $options[] = "<option value = '$selectValue'>" . $title . '</option>'.PHP_EOL ;
          }
          $options[] = "</optgroup>";
       }
    }
    $selectTag = '<select ' . $this->setAttribute($attributs) . '>'.PHP_EOL;
    return $selectTag . implode($options, ' ') . '</select>';
}