Всех приветствую. Такая проблема, надо подсчитать количество задач у пользователя в битриксе по каждому фильтру, которые есть в массиве. Но это работает не так как надо. Массив после выполнения кода должен выглядеть так:
array(1) {
[0]=>
array(2) {
["FIO"]=>
string(6) "Имя"
["count"]=>
array(2) {
[0]=>
int(10), // количество задач с первого фильтра
[1]=>
int(15), // количество задач со второго фильтра
[2]=>
int(5), // количество задач с третьего фильтра
}
}
}
Сам код:
Loader::includeModule('tasks');
$arrayReportCount = array();
// сам массив с фильтрами
$filters = array(
array(
"STATUS" => array(3), // Задача выполняется
),
array(
"STATUS" => array(5), // Задача завершена
),
array(
"STATUS" => array(4), // Условно завершена (ждет контроля постановщиком).
),
);
foreach ($filters as $filter) {
$taskCount = 0; // Устанавливаем начальное значение количества задач в 0
$rsTasks = CTasks::GetList([], $filter);
while ($arTasks = $rsTasks->Fetch()) {
$taskCount++;
$name = $arTasks["RESPONSIBLE_NAME"];
// Проверяем, существует ли уже элемент с таким именем в массиве $arrayReportCount
$exist = false;
foreach ($arrayReportCount as $key => $report) {
if ($report["FIO"] == $name) {
$arrayReportCount[$key]["count"][] = $taskCount; // Используем ссылку на элемент массива для изменения "count"
$exist = true;
break;
}
}
if (!$exist) {
$arrayReportCount[] = array(
"FIO" => $name,
"count" => array($taskCount)
);
}
}
// Проверяем, есть ли задачи в данном фильтре, иначе добавляем "count" = 0
if ($taskCount === 0) {
foreach ($arrayReportCount as $key => $report) {
if (!isset($arrayReportCount[$key]["count"])) {
$arrayReportCount[$key]["count"] = array(0);
break;
}
}
}
}
var_dump ($arrayReportCount);