PHPにおける数値型の基本から、演算子、端数処理、ビット演算、フォーマットや変換まで、初心者にもわかりやすく解説します。
PHPで扱える数値型とは?整数型と浮動小数点型の違い
PHPでは主に以下の2種類の数値型を扱います。型を意識することで、意図しないエラーや精度のズレを防げます。
- 整数型(int):小数点を含まない数
- 浮動小数点型(float または double):小数点を含む数
型チェック・変換の基本関数と実装例
関数 | 説明 | 使用例 |
---|---|---|
gettype($var) | 変数の型を文字列で返す | gettype(100) → "integer" |
is_int($var) | 整数かどうかを判定 (bool) | is_int(3.14) → false |
is_float($var) | 浮動小数点かどうかを判定 (bool) | is_float(3.14) → true |
intval($var) | 整数にキャスト | intval("12 apples") → 12 |
floatval($var) | 浮動小数点にキャスト | floatval("3.14xyz") → 3.14 |
<?php
$int = 100; // 整数
$float = 3.14; // 浮動小数点数
echo gettype($int); // 出力: integer
echo gettype($float); // 出力: double
?>
PHPの算術演算子一覧と基本的な使い方
PHPの算術演算子を使うことで、加算・減算・乗算・除算・剰余などの基本的な計算が行えます。
演算子 | 意味 | 例 | 結果例 |
---|---|---|---|
+ | 加算 | $a + $b | 左辺と右辺の和 |
- | 減算 | $a - $b | 左辺から右辺を引いた差 |
* | 乗算 | $a * $b | 左辺と右辺の積 |
/ | 除算 | $a / $b | 左辺を右辺で割った商 |
% | 剰余 | $a % $b | 左辺を右辺で割った余り |
** | べき乗 | $a ** $b | 左辺の$b`乗 |
加算 (+
)
数値同士を足し合わせます。文字列同士を結合する場合は .
(ドット)演算子を使います。
減算 (-
)
左辺から右辺を引きます。
乗算 (*
)
左辺と右辺を掛け合わせます。
除算 (/
)
左辺を右辺で割ります。結果は自動的に float
になる場合があります。
剰余 (%
)
左辺を右辺で割ったあとの余りを返します。主に「奇数・偶数判定」や「循環処理」に利用。
べき乗 (**
)
PHP 5.6 以降で利用可能。$a ** $b
は「$a を$b`乗した値」を返します。
基本的な使い方
<?php
$a = 10;
$b = 3;
echo $a + $b; // 13
echo "\n";
echo $a - $b; // 7
echo "\n";
echo $a * $b; // 30
echo "\n";
echo $a / $b; // 3.3333333333333
echo "\n";
echo $a % $b; // 1
echo "\n";
echo $a ** $b; // 10の3乗 = 1000
?>
ビット演算子の基礎:AND・OR・XOR・ビットシフトの使い方
ビット演算子は、数値を2進数として扱う演算です。あまり使用することはないですが、効率的なフラグ管理やパフォーマンス改善に役立ちます。
演算子 | 説明 | 例 |
---|---|---|
& | AND | $a & $b |
` | ` | OR |
^ | XOR | $a ^ $b |
~ | NOT | ~$a |
<< | 左シフト | $a << 1 |
>> | 右シフト | $a >> 1 |
<?php
$a = 6; // 110
$b = 3; // 011
echo $a & $b; // 2(二進数: 010)
?>
数値の端数処理:切り捨て・切り上げ・四捨五入の方法
PHPには端数処理のための関数が用意されています。
<?php
$num = 3.75;
echo floor($num); // 3:小数点以下を切り捨て
echo ceil($num); // 4:小数点以下を切り上げ
echo round($num); // 4:四捨五入
?>
数値フォーマット:桁区切り・小数点の整形方法
数値を表示する際には、見やすい形に整形することが重要です。number_format()
関数を使えば、通貨や統計の出力が整えられます。
<?php
$price = 1234567.89;
echo number_format($price); // 1,234,568
echo number_format($price, 2); // 1,234,567.89
?>
ランダムな数値を生成する関数の使い方
PHPではランダムな数値を生成するための関数が複数あります。
<?php
echo rand(1, 100); // 1〜100の間の乱数(整数)
echo mt_rand(1, 1000); // より高速な乱数生成(整数)
?>
暗号的な乱数が必要な場合はrandom_int()
を使います(PHP 7以降)。
<?php
echo random_int(1, 10); // 安全な乱数
?>
数値と文字列の変換、数値操作の関数まとめ
PHPでは数値と文字列を相互に変換することが可能ですが、意図しない型変換に注意が必要です。
1. 型変換(キャスト/専用関数)
方法・関数 | 説明 | サンプル |
---|---|---|
(int)$var | 変数を整数型にキャスト | (int)"123px" → 123 |
(float)$var | 変数を浮動小数点型にキャスト | (float)"3.14abc" → 3.14 |
(string)$var | 変数を文字列型にキャスト | (string)100 → "100" |
intval($var) | 変数を整数型に変換(キャストと同等) | intval("12 apples") → 12 |
floatval($var) | 変数を浮動小数点型に変換 | floatval("2.5e2") → 250.0 |
strval($var) | 変数を文字列型に変換 | strval(3.14) → "3.14" |
settype($var, $type) | 変数の型を $type (”int”/”float”/”string”…)に変更 | settype($x, "int"); |
<?php
$str = "100px";
$num1 = (int)$str; // 100
$num2 = intval($str); // 100
$flt = (float)"3.14abc"; // 3.14
$s = strval(123.45); // "123.45"
var_dump($num1, $num2, $flt, $s);
?>
2. 文字列化・書式整形
関数 | 説明 | サンプル |
---|---|---|
number_format($num) | 小数点以下なし、3桁区切りカンマ付きの文字列返却 | number_format(1234567) → "1,234,567" |
number_format($num, d) | 小数点以下 d 桁まで丸めて文字列返却 | number_format(3.14159, 2) → "3.14" |
sprintf() /printf() | 書式指定子で文字列を生成/出力 | sprintf("%.2f", 2.5) → "2.50" |
<?php
$price = 9876543.21;
echo number_format($price); // 9,876,543
echo "\n";
echo number_format($price, 1); // 9,876,543.2
echo sprintf("残高は %.2f 円です", 1234.5);
// 出力: 残高は 1234.50 円です
?>
3. 数値操作の基本関数
関数 | 説明 | サンプル |
---|---|---|
abs($num) | 絶対値を返す | abs(-5) → 5 |
round($num, d) | 四捨五入(小数点以下 d 桁まで) | round(3.14159, 3) → 3.142 |
ceil($num) | 切り上げ | ceil(2.1) → 3 |
floor($num) | 切り捨て | floor(2.9) → 2 |
max($a, $b, …) | 引数の中で最大値を返す | max(1, 5, 3) → 5 |
min($a, $b, …) | 引数の中で最小値を返す | min(1, 5, 3) → 1 |
pow($a, $b) | べき乗($a ** $b と同等) | pow(2, 3) → 8 |
sqrt($num) | 平方根 | sqrt(16) → 4 |
rand($min, $max) | 範囲内の疑似乱数を返す | rand(1, 100) → 57 |
<?php
echo abs(-10), "\n"; // 10
echo round(2.71828, 2), "\n"; // 2.72
echo ceil(4.2), "\n"; // 5
echo floor(4.8), "\n"; // 4
echo max(3, 7, 2), "\n"; // 7
echo min(3, 7, 2), "\n"; // 2
echo pow(3, 4), "\n"; // 81
echo sqrt(81), "\n"; // 9
echo rand(1, 10), "\n"; // 例: 4
?>
よく使う数値操作関数一覧
関数 | 説明 |
---|---|
abs() | 絶対値を返す |
round() | 四捨五入する |
floor() | 切り捨てる |
ceil() | 切り上げる |
number_format() | 表示フォーマットを整える |
まとめ
PHPにおける数値操作は、Web開発のあらゆる場面で必要になります。
本記事では、数値型の基本から演算子・端数処理・ビット演算・フォーマット・乱数生成・型変換までを網羅しました。
初学者の方は、実際にコードを書きながら理解を深めていくことをおすすめします。