【PHP】max()関数で条件式を省略する

プログラミング

突然ですが、次のような簡単なプログラムを作るとします。

面積Sの浴槽があります。これを面積Aの蓋を2枚使用してカバーした場合に、カバーされていない浴槽の面積を求めましょう。(単位略)

<?php
$S = 12;
$A = 8;

$cover = $A * 2;
$notCover = $S - $cover;
?>

もちろん面積にマイナスはありえないので条件式を使用して

<?php
$S = 12;
$A = 8;

$cover = $A * 2;
$notCover = $S - $cover;

if($notCover < 0){
    $notCover = 0;
}
?>

という風に書くことでカバーされていないエリアがマイナスになるのを防げます。

しかしif文を使わずともこれを実現する方法もあります。

<?php
$S = 12;
$A = 8;

$cover = $A * 2;
$notCover = max(($S - $cover),0);

?>

このようにmax()関数を使用することでマイナスになる場合には0を、プラスの場合はそのままの値を$notCoverに格納することができます。

競プロの問題を解いていて解説でこのやり方を見たときにスマートだな~と思ったのでメモ

コメント

タイトルとURLをコピーしました