PHPの基礎 - 数値

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
ナビゲーションに移動 検索に移動

概要

文字列と並んで重要なデータ型である数値について記載する。
数値は、四則演算など計算を行うことが可能である。


数値リテラル

数値とは、整数や浮動小数点数等の数値である。
ただし、シングルクオーテーション'やダブルクオーテーション"で囲んで記述すれば文字列となる。

整数は10進数の他に8進数と16進数の形式で表記することができる。

955   // 先頭が0以外の整数は10進数の整数
034   // 先頭が0から始まりその後に数値が続くものが8進数
0x3A  // 先頭が0xから始める数値は16進数
-82   // 負の整数(10進表記)
-0xD2 // 負の整数(16進表記)


浮動小数点数は、小数点を含む数値である。
固定小数点形式を使用した記述方法の他に、指数表現も指定できる。

2.72
1.42E-5  // 1.42×10^(-5)
-0.72
-8E14    // -8×10^(14)



四則演算

数値や文字列等の値に対して、計算および連結する演算子が存在する。
例えば、文字列同士を連結する.演算子や変数に値を格納する=演算子等である。

以下に、四則演算に関する演算子を示す。

  • *
    乗算
  • /
    除算
  • +
    加算
  • -
    減算
  • %
    剰余



演算子の優先順位

四則演算で使用した演算子等には、優先順位が決まっている。
複数の演算子を使用する式では、どの演算から行うのかが重要となる。

以下に、四則演算に関する演算子の優先順位を示す。
なお、同じ優先順位の演算子の場合、演算子ごとに決まっている結合順位にしたがう。
四則演算の演算子の結合順位は左から右のため、左に記述されている演算子から行われる。

(優先順位が高い)
*  /  %
+  -
(優先順位が低い)


演算子の優先順位とは異なる順序で演算を行う場合、括弧()を使用する。
括弧の中に複数の演算子が使用されている場合、演算子の優先順位によって演算が行われる。
また括弧が多重に使用されている場合、内側の括弧が優先される。

2 * ((5 + 3) * 4 - (4 + 5) / 3)


例えば、上式の場合、以下の順序で演算が行われる。
複雑な式であっても、括弧と優先順位により必ず演算される順序は1つに決まる。

(1) 5 + 3 = 8     //  2 * (8 * 4 - (4 + 5) / 3)
(2) 4 + 5 = 9     //  2 * (8 * 4 - 9 / 3)
(3) 8 * 4 = 32    //  2 * (32 - 9 / 3)
(4) 9 / 3 = 3     //  2 * (32 - 3)
(5) 32 - 3 = 29   //  2 * 29
(6) 2 * 29 = 58



型変換

PHPでは、値に対するデータ型は存在しているが、必要に応じて自動的に変換が行われる場合がある。
例えば、数値と文字列、数値同士、整数と浮動小数点数等の異なるデータ型であっても、PHPがデータ型を自動的に変換して演算を行う。

以下のように、整数と浮動小数点数の演算を行う場合、まず、整数を浮動小数点に変換して演算を行う。
演算の結果も、浮動小数点数となる。

3 + 2.4
1.72 + 7


文字列の先頭に整数や浮動小数点等がある場合、文字列は先頭からの数値の部分が変換される。

'2008year'        // 2008
'1.02パーセント'  // 1.02


先頭の文字が数値でない場合、0として扱われる。

'こんにちは'  // 0
'year2008'    // 0


また、整数と文字列の演算を行う場合、文字列を数値に変換した結果が浮動小数点数である場合には、
次に整数が浮動小数点数に変換されて演算が行われる。