ifTrue, если выражение b правдиво и ifFalse в противном * случае. * * @param bool $b Выражение типа правда/ложь. * @param string $ifTrue Строка для правдивого выражения. По умолчанию "true". * @param string $ifFalse Строка для лживого выражения. По умолчанию "false". * * @return string Вывод строки. */ public static function ExportToString (bool $b, string $ifTrue = "true", string $ifFalse = "false"): string { return $b ? $ifTrue : $ifFalse; } /** * Вычисляет, есть ли хотя бы одно из переменных формата правда/ложь expressions в значении * true. * * @param array $expressions Переменные формата правда/ложь. * @param VarNotBoolAction $ifNotBool Действие, если какой-то аргумент expressions не является булевым * типом. По умолчанию игнорировать. * * @return bool Есть ли хотя бы одно в значении true. * */ public static function AnyTrue (array $expressions, VarNotBoolAction $ifNotBool = VarNotBoolAction::Ignore): bool { return self::TrueCount($expressions, $ifNotBool) > 0; } /** * Вычисляет количество переменных формата правда/ложь expressions в значении true. * * @param array $expressions Переменные формата правда/ложь. * @param VarNotBoolAction $ifNotBool Действие, если какой-то аргумент expressions не является булевым * типом. По умолчанию игнорировать. * * @return int Количество переменных в значении true. */ public static function TrueCount (array $expressions, VarNotBoolAction $ifNotBool = VarNotBoolAction::Ignore): int { // Создаем пустой массив для хранения проверяемых аргументов $checkArray = []; // Проверяем все входящие аргументы foreach ($expressions as $expression) // - если аргумент не является типом правда/ложь if (!is_bool($expression)) // -- то делаем следующее в зависимости от настроек: switch ($ifNotBool) { case VarNotBoolAction::Ignore: // --- игнорируем аргумент break; case VarNotBoolAction::ConsiderItTrue: // --- считаем аргумент как истинное значение $checkArray[] = true; break; case VarNotBoolAction::ConsiderItFalse: // --- считаем аргумент как ложное значение $checkArray[] = false; break; } else // - иначе добавляем аргумент в массив проверяемых аргументов $checkArray[] = $expression; // Используем array_filter для фильтрации всех истинных значений $filtered = array_filter($checkArray, fn ($value) => $value === true); // Возвращаем количество элементов в отфильтрованном массиве return count($filtered); } }