$i) { $arr_keys[] = self::KEY_PREFIX . $i; $i++; } array_flip($arr_keys); } $model = new DynamicModel($arr_keys); return $model; } // @todo add comments public static function CreateGridWithDropDownListHeader( $dataProvider, $form, $header_model, $arr_header_values ) { $columns_config = [['class' => SerialColumn::className()]]; $i = 0; foreach( $header_model as $key => $value ) { $columns_config[] = ['header' => $form->field($header_model, $key, ['inputOptions' => ['label' => '']])->dropDownList($arr_header_values), 'attribute' => $i]; $i++; } $dynamic_grid_view = GridView::widget( ['dataProvider' => $dataProvider, 'columns' => $columns_config ] ); return $dynamic_grid_view; } /** * @param $value_arr - двумерный массив значений, которому нужно присвоить ключи * @param $key_array - ключи для вложенного массива * @return array - таблица с проименованными колонками */ public static function CreateAssocArray ($value_arr, $key_array) { // преобразуем массив ключей (обернем в массив), для передачи его в качестве параметра в анонимную функцию для array_map // для этого увеличим размерность массива, что бы при каждом обходе массива $value_arr , функции был доступен исходный массив ключей $key_array = array_fill( 0, count($value_arr), array_flip($key_array)); $result = array_map( function ($value, $key_array) { $res = $value; foreach ($value as $key => $sub_value) { if (isset($key_array[$key])) { // если такой ключ в базовом массиве (массиве ключей) есть, то заменим новым, иначе просто удалим $new_key = $key_array[$key]; if( !array_key_exists( $new_key , $res ) ){ $res[ $new_key ] = $res[$key]; } } unset( $res[$key] ); } return $res; }, $value_arr, $key_array); return $result; } }