function get_positions() { $posi_list = get_confs('push-settings', 'positions', '名称'); $posi_list = $posi_list['push-settings']['positions']; global $field_settings, $posi_vals; $result = replace_keys($posi_list, function ($key) use($field_settings) { $res = @$field_settings[$key]; return empty($res) ? $key : $res; }); foreach ($result as $cap => &$item) { foreach ($item as $key => &$value) { if (is_string($value)) { if (array_key_exists($value, $posi_vals)) { $value = $posi_vals[$value]; } } } } return $result; }
function replace_keys(array $input, $replace_func) { $return = array(); foreach ($input as $key => $value) { $key = call_user_func($replace_func, $key); if (is_array($value)) { $value = replace_keys($value, $replace_func); } $return[$key] = $value; } return $return; }