計算式を使う

計算をしてみよう

加減乗除の計算

PHPでは足し算や引き算を意味する「+(プラス)」や「-(マイナス)」を「算術演算子」、変数に代入する「=(イコール)」を「代入演算子」と呼びます。

算術演算子

演算子 意味 記述例 演算子の説明
+ 加算 10 + 4 10に4を足す足し算
- 減算 10 - 4 10から4を引く引き算
* 乗算 10 * 4 10に4を掛ける掛け算
/ 除算 10 / 4 10を4で割る割り算
% 剰余算 10 % 4 10を4で割った余りを求める剰余算
= 値を代入 $num = 10+4 10と4を足し変数$numに代入

計算式例

    <?php
        $num = 10 + 4; // 加算
        echo "$num<br />¥n";

        $num = 10 - 4; // 減算
        echo "$num<br />¥n";

        $num = 10 * 4; // 乗算
        echo "$num<br />¥n";

        $num = 10 / 4; // 除算
        echo "$num<br />¥n";

        $num = 10 % 4; // 剰余算
        echo "$num<br />¥n";
    ?>
    

実行結果

14
6
40
2.5
2

前述の各スクリプトそれぞれの結果が出力されています。

値を比較する

比較演算子で条件を比べる

PHPでは、スクリプト上の処理分岐などの際には演算子を使用します。

その場合に使用する「>(大なり)」、「<(小なり)」の記号を「比較演算子」と呼びます。

演算子 意味 記述例 演算子の説明
== 等しい $z == 5 $zと5は等しい
> より大きい $z > 5 $zは5より大きい
< より小さい $z < 5 $zは5より小さい
<= 小さいないし等しい $z <= 5 $zは5より小さいないし等しい
>= 大きいないし等しい $z >= 5 $zは5より大きいないし等しい
!= 等しくない $z != 5 $zと5は等しくない
<> 等しくない $z <> 5 $zと5は等しくない

比較式例

    <?php
        $z = 5;
        if ( $z == 5 )
        echo "¥$zと5は等しい<br />¥n"; // 「¥」はエスケープ文字です。

        $z = 3;
        if ( $z < 5 )
        echo "¥$zは5より小さい<br />¥n";

        $z = 10;
        if ( $z > 5 )
        echo "¥$zは5より大きい<br />¥n";

        $z = 3;
        if ( $z <= 5 )
        echo "¥$zは5より小さいないし等しい<br />¥n";

        $z = 5;
        if ( $z >= 5 )
        echo "¥$zは5より小さいないし等しい<br />¥n";

        $z = 5;
        if ( $z >= 5 )
        echo "¥$zは5より大きいないし等しい<br />¥n";

        $z = 10;
        if ( $z >= 5 )
        echo "¥$zは5より大きいないし等しい<br />¥n";

        $z = 10;
        if ( $z != 5 )
        echo "¥$zは5と等しくない<br />¥n";
    >
    

実行結果

$zと5は等しい
$zは5より小さい
$zは5より大きい
$zは5より小さいないし等しい
$zは5より小さいないし等しい
$zは5より大きいないし等しい
$zは5より大きいないし等しい
$zは5と等しくない

それぞれの比較演算子での実行結果が出ています。ここで、注目することは比較演算子の条件を満たしたものが出力されるということです。

例えば、「if ( $z != 5 )」では$zは5と等しくないことを条件にしているので、もしここで「$z = 10;」を「$z = 5;」とすると「if ( $z != 5 )」の等しくないという条件を満たさなくなるので、「$zは5と等しくない」という出力はされなくなります。

※「¥」はエスケープ文字と呼ばれるもので、ここではechoの中の$zが変数になってしまわないようにエスケープ文字の「¥」を使用しています。

論理演算をする

論理演算子

PHPでは、条件とする式を結合することができます。その場合は、条件とする式の間に「and」や「or」の記号を使用します。この記号を「論理演算子」と呼びます。

論理積と論理和に関しては演算子が2つあります。意味としては同じなのですが、演算子の優先の順位が違います。

例えば、同じ条件式を書いた場合、&&と||が優先されます。

論理演算子

演算子 意味 記述例 演算子の説明
&& 論理積 $z && $y $zと$yの両方が成り立つ時
|| 論理和 $z || $y $zと$yの片方または両方が成り立つとき
and 論理積 $z and $y $zと$yの両方が成り立つとき
or 論理和 $z or $y $zと$yの片方または両方が成り立つとき
xor 排他的論理和 $z xor $y $zと$yの片方が成り立ち、両方が成り立たないとき
! 否定 !$z $zが成り立たないとき

3つの条件式がすべて成り立つ

    <?php
        $a = 5;
        $b = 6;
        $c = 7;

        if ( $a == 5 and $b == 6 and $c == 7 )
        echo "3つの条件はすべて成り立ちます。<br />¥n";
    ?>
    

実行結果

3つの条件はすべて成り立ちます。

前述のスクリプトは「($a == 5 and $b == 6 and $c == 7)」が成り立つときのみ「3つの条件はすべて成り立ちます。」が出力されるスクリプトとなっています。

3つの条件式のうちいずれかが成り立つ

    <?php
        $a = 7;
        $b = 6;
        $c = 5;

        if ( $a == 2 or $b == 3 or  $c == 5 )
        echo "3つの条件式のはいずれかが成り立ちます。<br />¥n";
    ?>
    

実行結果

3つの条件式のはいずれかが成り立ちます。

前述のスクリプトは「($a == 2 or $b == 3 or $c == 5 )」の条件式のうちいずれかが成り立つときに「3つの条件式のはいずれかが成り立ちます。」が出力されるスクリプトとなっています。

ここでは、条件式である「($a == 2 or $b == 3 or $c == 5 )」の「$c == 5」の条件が成り立っているので、「3つの条件式のはいずれかが成り立ちます。」が出力されます。

文字列同士の計算をする

文字列結合演算子

PHPでは、「.(ピリオド)」記号を文字列の間に挿入することによって、文字列を結合することができます。この記号を「文字列結合演算子」と呼びます。

文字列の結合

    <?php
        $last_name = "文字列";
        $first_name = "太郎";

        $full_name = $last_name. " ". $first_name;
        echo "$full_name";
    ?>
    

実行結果

文字列 太郎

前述のスクリプトでは、変数「$last_name」、「$first_name」にそれぞれ「文字列」、「太郎が」入っています。

$last_name." ".$first_name;の.(ピリオド)により、文字列が結合された状態で変数「$full_name」に入り、echoで出力され「文字列 太郎」となっています。

文字列結合演算子は一般的には、長い文字列を結合する際などに使用します。短い文字列を結合する場合には、文字列結合演算子を使用しなくても結合はできます。

文字列結合演算子を使用しない場合の結合

    <?php
        $last_name = "文字列";
        $first_name = "太郎";

        echo "$last_name $first_name<br />¥n";

        echo "$first_name&三郎は兄弟です<br />¥n";

        echo "$first_nameと三郎は兄弟です<br />¥n";
    ?>
    

実行結果

文字列 太郎1
太郎&三郎は兄弟です

前述のスクリプトでは、1つ目のechoでは半角スペースを入れています。2つ目のechoでは、&を入れています。どちらのechoもスクリプトで書いた通りの出力をしています。

ただ、3つ目のechoが出力はされていません。これは、「$first_name」と「と三郎は兄弟です」を1つの文字列変数として解釈としてしまうことによることが原因です。

このような場合のは「{}(中かっこ)」で括り範囲を指定することによって出力されます。

    <?php
        $first_name = "太郎";
        echo "${first_name}と三郎は兄弟です<br />¥n";
    ?>
    

実行結果

太郎と三郎は兄弟です

前述のスクリプトでは、「{}(中かっこ)」で文字列変数の範囲を指定していますので、echoで「太郎と三郎は兄弟です」が出力されています。

三項演算子

条件式と返り値を記述する

三項演算子は、条件式と条件が成立するとき、成立しないときに返す値を一個の式で表されます。

三項演算子は「?」、「」を使用します。「?」の左辺には条件式を記述します。そして、「:」を挟み、条件を満たす場合、満たさない場合の返る値を記述します。

三項演算子を使用した条件

    <?php
        $price = 5;
        $string = "みかんは". ( $price > 2 ? "おいしい" : "まずい" );
        echo "$string";
    ?>
    

実行結果

みかんはおいしい

前述のスクリプトでは、三項演算子である「$price > 2」を条件式とし、条件を満たした時には、「みかんはおいしい」、満たさない時には、「みかんはまずい」と出力されます。

今回の場合は、「$price = 5;」から、2より$priceの方が大きいので「みかんはおいしい」と出力されます。

計算に使える数学関数

絶対値を求める

PHPでは絶対値を求める場合はabs関数を使用します。

abs(数値)

abs関数で数値の絶対値を求める

    <?php
        $figure = -10;
        $figure = abs( $figure );

        echo $figure;
    ?>
    

実行結果

10

前述のスクリプトでは、-10に対する絶対値、10が求められています。

引数の次に大きい整数を求める

PHPでは引数で指定した数値から、次に大きい整数を返す値を求める場合はceil関数を使用します。

ceil関数で引数の次に大きい値を求める

    <?php
        $figure = 15.4;
        $figure = ceil( $figure );

        echo $figure;
    ?>
    

実行結果

16

前述のスクリプトでは、ceil関数により15.4の次に大きい16が求められています。

最も近い最小の整数を求める

PHPでは、floor関数は引数で指定した数値から、最小の整数値を返します。

floor(数値)

floor関数で、指定した数値から最小の整数値を求める

    <?php
        $figure = 15.4;
        $figure = floor( $figure );

        echo $figure;
    ?>
    

実行結果

15

前述のスクリプトでは、floor関数により最も近い最小の整数値15が出力されています。

四捨五入する

PHPではround関数により、四捨五入することができます。

round(数値)

round関数で、指定した数値から四捨五入した値を求める

    <?php
        $figure = 18.2;
        $figure = round( $figure );

        echo "$figure<br />¥n";

        $figure = 18.5;
        $figure = round( $figure );

        echo "$figure<br />¥n";
    ?>
    

実行結果

18
19

前述のスクリプトでは、round関数により「18.2」と「18.5」がそれぞれ四捨五入され「18」「19」となっています。

形式を整える

PHPでは、number_format関数を使用すると「,」で3桁区切りにして出力します。また、2番目の引数で、小数点以下第何位まで表示するかを設定、3番目の引数で小数点を表す文字を指定することができます。

パラメータが1つだけ渡された場合、 number は千位毎にカンマ (",") が追加され、小数なしでフォーマットされます。

パラメータが2つ渡された場合、numberはdecimals 桁の小数の前にドット (".") 、 千位毎にカンマ (",") が追加されてフォーマットされます。

パラメータが4つ全て渡された場合、number はドット (".") の代わりにdec_pointがdecimals桁の小数の前に、千位毎にカンマ (",") の代わりに thousands_sep が追加されてフォーマットされます。

number_format関数(float number [, int decimals [, string dec_point, string thousands_sep]] )

number_format関数で出力を整形する

    <?php
        $figure = 100000.000;

        echo number_format( $figure ),"<br />¥n";
        echo number_format( $figure, 4 ),"<br />¥n";
        echo number_format,"<br />¥n";
    ?>
    

実行結果

100,000
100,000.0000
100|000|0000

前述のスクリプトでは、1番目のechoでは3桁区切りで数字が表示されています。2番目のechoでは、「($figure,4)」で2番目の引数に4としているので、少数点以下第4位まで表示しています。3番目のechoでは「($figure,4,"|","|")」3番目の引数と4番目の引数に「|」と指定しているので区切記号が「|」に変わっています。