PHP
- 2 ответа
- 0 вопросов
0
Вклад в тег
function process($input, $k, array $prefix = array())
{
$result = [];
if ( $k === 1 )
{
foreach ($input as $item)
{
$result[] = array_merge($prefix, [$item]);
}
}
else
{
$n = count($input);
$m = $n - $k + 1;
for ( $i = 1; $i <= $m; $i++ )
{
$subInput = array_slice($input, $i, $k);
$subPrefix = array_merge($prefix, [$input[$i-1]]);
$r = process($subInput, $k-1, $subPrefix);
$result = array_merge($result, $r);
}
}
return $result;
}
$input = [1, 2, 3, 4, 5];
$k = 3;
$result = process($input, $k);
var_export($result);
Workflow: (Маршрут согласования)
id
name (Название маршрута согласования)
WorkflowPoint: (Точка согласования)
id
title (Название точки. Например "Согласование фин директора")
workflow_id (Связанный маршрут)
user_id (Пользователь, который рассматривает документ в этой точке согласования)
order_id (Порядковый номер точки в маршруте)
roles (Права пользователя, в данной точке согласования)
Approval: (Документ согласования)
id
title (Название документа)
author_id (Инициатор)
state = 0 (Состояние документа. 0 - черновик. 1 - в процессе согласования. 2 - одобрено. 3 - отказано. 4 - архивировано)
workflow_id (Маршрут, по которому движется данный документ. По умолчанию null, кроме того, когда состояние документа в процессе согласования)
workflow_point_id (Текущая точка согласования в маршруте. При одобрении, указывается следующая точка)
approval_user_id (Пользователь, который должен рассмотреть документ в текущий момент. Это поле чисто для удобства в поиске)
Attachment: (Файл-вложение)
id
approval_id (Связанный документ)
file_path (Путь к файлу)
author_id (Пользователь, который вложил файл)