PHP将数组检查为数组或多维数组


PHP check array into array or multidimensional array

我想用PHP函数创建HTML元素。在本节中,我有select函数来创建select标签。对于我想检查数组是否简单的值,我的函数创建简单的select,否则为选项创建optgroup

我创建select的方法:

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

其他用途:

$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%;' 
                         )
                ) ;

现在在下面的函数中,我想检查数组是否存在于数组中,函数必须是创建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>';
    }

此函数不正确。如何解决这个问题?谢谢

试试这个(希望能帮助你)

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>';
}