multi_check_box
Github

	function multi_check_box() {
		return _class('html')->multi_check_box('input_name', ['k1' => 'key1', 'k2' => 'key2']);
	}
	function multi_check_box($name, $values = [], $selected = [], $horizontal = true, $type = 2, $add_str = '', $translate = 0, $name_as_array = false) {
		if (is_array($name)) {
			$extra = (array)$extra + $name;
			$name = $extra['name'];
		}
		$values = isset($extra['values']) ? $extra['values'] : (array)$values; // Required
		$translate = isset($extra['translate']) ? $extra['translate'] : 0;
		if ($extra['no_translate']) {
			$translate = 0;
		}
		$selected = $extra['selected'];
		$type = isset($extra['type']) ? $extra['type'] : (!is_null($type) ? $type : 2);
		$horizontal = isset($extra['horizontal']) ? $extra['horizontal'] : $horizontal;
		$name_as_array = isset($extra['name_as_array']) ? $extra['name_as_array'] : false;
		$add_str = isset($extra['add_str']) ? $extra['add_str'] : '';
		if ($extra['class']) {
			$add_str .= ' class="'.trim($extra['class'].' '.$extra['class_add']).'" ';
		}
		if ($extra['style']) {
			$add_str .= ' style="'.$extra['style'].'" ';
		}
		if (!$values) {
			return false;
		}
		if (!is_array($selected)) {
			$selected = strval($selected);
		}
		$body = [];
		if ($extra['outer_label']) {
			$body[] = '<label class="outer-label">'.$extra['outer_label'].'</label>';
		}
		foreach ((array)$values as $key => $value) {
			$sel_text = '';
			// Selected value could be an array
			if (is_array($selected)) {
				if ($type == 1) {
					$sel_text = in_array($value, $selected) ? 'checked="checked"' : '';
				} else {
					$sel_text = isset($selected[$key]) ? 'checked="checked"' : '';
				}
			} elseif (strlen($selected)) {
				$_what_compare = strval($type == 1 ? $value : $key);
				$sel_text = $_what_compare == $selected ? 'checked="checked"' : '';
			} else {
				$sel_text = '';
			}
			$is_selected = strlen($sel_text) ? 1 : 0;
			if ($name_as_array) {
				$val_name = $name.'['.$key.']';
			} else {
				$val_name = $name.'_'.$key;
			}
			$label_extra = $extra['label_extra'];
			$label_extra['class'] = isset($label_extra['class']) ? $label_extra['class'] : (isset($extra['class_label_checkbox']) ? $extra['class_label_checkbox'] : $this->CLASS_LABEL_CHECKBOX);
			if ($horizontal) {
				$label_extra['class'] .= ' '.$this->CLASS_LABEL_CHECKBOX_INLINE;
			}
			if ($extra['class_add_label_checkbox']) {
				$label_extra['class'] .= ' '.$extra['class_add_label_checkbox'];
			}
			if ($is_selected) {
				$label_extra['class'] .= ' '.$this->CLASS_LABEL_CHECKBOX_SELECTED;
			}
			$id = __FUNCTION__.'_'.++$this->_ids[__FUNCTION__];
			if ($extra['no_desc']) {
				$desc = '';
			} else {
				$desc = ($translate ? t($value) : $value);
			}
			if ($this->BOXES_USE_STPL) {
				$body[] = tpl()->parse('system/common/check_box_item', [
					'name'		=> $val_name,
					'value'		=> $key,
					'desc'		=> $desc,
					'selected'	=> $sel_text,
					'add_str'	=> $add_str,
					'label'		=> $translate ? t($value) : $value,
					'id'		=> $id,
					'extra'		=> $extra,
				]);
			} else {
				$body[] = '<label'._attrs($label_extra, ['id', 'class', 'style']).'>'
							. '<input type="checkbox" name="'.$val_name.'" id="'.$id.'" value="'.$key.'"'
							. ($is_selected ? ' '.$sel_text : '') . ($add_str ? ' '.trim($add_str) : '')
							. '>  '. '<span>'.$desc.'</span>'  // Please do not remove whitespace :)
						.'</label>';
			}
		}
		return implode(PHP_EOL, $body);
	}