TemKa_SD 9 04/25/19 18:13 (изменено) Здравствуйте, я только учу всё, вот решил потестить in_array(). Задача следующая: мне нужно разделить ключи и значения из формы на два массива, один передается как обычно в $this->save, второй в отдельную функцию. public function formatFormValues( $values ) { isset($values['map_id']) ? $values['map_id'] = $values['map_id']->_data['id'] : NULL; if (isset( $values['mapcfg_name']) AND isset( $values['map_id'] ) ) { $map = \IPS\wc3\Map::load( $values['map_id'] ); $values['map_localpath'] = $map->_data['map_name']; $values['map_path'] = "Maps\\Download\\" . $map->_data['map_name']; $cfg_name = $values['mapcfg_name']; } $settingsKeys = array('map_path', 'map_localpath', 'map_size', 'map_info', 'map_crc', 'map_sha1', 'map_speed', 'map_visibility', 'map_observers', 'map_flags', 'map_filter_maker', 'map_filter_type', 'map_filter_size', 'map_filter_obs', 'map_options', 'map_width', 'map_height', 'map_type', 'map_matchmaking', 'map_matchmakingcategory', 'map_statsw3mmdcategory', 'map_defaulthcl', 'map_defaultplayerscore', 'map_loadingame', 'map_numplayers', 'map_numteams', 'map_slot', 'map_maxslots'); $settingValues = array(); foreach( $values as $k => $v ) { if( $v ) { if( \in_array( $k, $settingsKeys ) ) { $settingValues[$k] = $v; $settingValues['mapcfg_name'] = $cfg_name; unset($settingValues['map_matchmaking']); } else { foreach ($settingsKeys as $key) { unset($values[$key]); } } } } $this->updateAsSettings($settingValues); return $values; } Что скажите? Спасибо. Изменено 25 апреля 2019 пользователем TemKa_SD Поделиться сообщением Ссылка на сообщение
siv1987 2628 04/25/19 19:58 Уныло. Зачем в цикле удалять значения values? Поделиться сообщением Ссылка на сообщение
TemKa_SD 9 04/26/19 03:03 Ну да, это я хотел перенести выше, спать пошел вчера уже. Ну да, для вас уныло, для меня - как первые шаги ребенка. Поделиться сообщением Ссылка на сообщение