Как не округлять число если оно равно 1?
$res = ($rand == 1 ? $user->balance - $amount : ($rand == 2 ? $user->balance - floor(($amount / 4) * 3) : ($rand == 3 ? $user->balance - floor(($amount / 2)) : ($rand == 4 ? $user->balance - floor(($amount / 4)) : ($rand == 5 ? $user->balance * 1 : $user->balance + $amount)))));
имеется такой код, тут в зависимости от числа в переменной $rand будут происходить разные действия с балансом игрока. Но имеется проблема, мне нужно округлять до меньшего все эти числа, но если в переменной $amount число 1, в результате действий (например $amount / 4) будет получаться ноль. Как можно сделать так чтобы этого не происходило?
Ответы (1 шт):
Автор решения: Gene Erbin
→ Ссылка
Примерно так, если я правильно разобрал эту цепочку условий.
function myFloor($amount, $divider) {
if ($amount == 1) {
return $amount; // Или $amount / $divder, не понял по условию, если $amount == 1, то не округлять или не округлять и не делить
} else {
return floor($amount / $divider);
}
}
switch ($rand) {
case 1:
$res = $user->balance - $amount;
break;
case 2:
$res = $user->balance - myFloor($amount, 4) * 3;
break;
case 3:
$res = $user->balance - myFloor($amount, 2);
break;
case 4:
$res = $user->balance - myFloor($amount, 4);
break;
case 5:
$res = $user->balance;
break;
default:
$res = $user->balance + $amount;
}
Вариант с match в PHP8
function myFloor($amount, $divider) {
if ($amount == 1) {
return $amount; // Или $amount / $divder, не понял по условию, если $amount == 1, то не округлять или не округлять и не делить
} else {
return floor($amount / $divider);
}
}
$res = match ($rand) {
1 => $user->balance - $amount,
2 => $user->balance - myFloor($amount, 4) * 3,
3 => $user->balance - myFloor($amount, 2),
4 => $user->balance - myFloor($amount, 4),
5 => $user->balance,
default => $user->balance + $amount,
};