Типом логики при определении значения чисел, с которым мне часто приходится иметь дело (я уверен, что мы все это делаем), является уменьшение числа, если оно больше другого числа.
Мой текущий пример таков:
$position = (int) $x; // Position in stream
$length = (int) $y; // Byte length in stream
$amount = (int) $z; // Amount of bytes to read
// Convert to single equation.
// ===================================================
$available = $length - $position;
$amount = $amount > $available ? $available : $amount;
// ===================================================
// Possible solution, but uses logic
// $amount = $amount > ($available = $length - $position) ? $available : $amount;
// doRead($amount)
Я поместил свое решение «по умолчанию» ниже начальных назначений, а мое сокращенное (но в конечном итоге то же самое) решение в комментарии под ним.
Я ищу математическое решение, то есть одно уравнение, где $amount
будет равен результат $length - $position
если оно больше этого вычитания, иначе оно останется неизменным.
Задача ещё не решена.
Других решений пока нет …