PHPの整数型(int/integer)とは?
その名の通り整数の数値をもつ型です。
正の数、負の数、2進法、10進法、16進法などさまざまな整数を表現できます。
型の名前としては論理型みたいにintやintegerという2通りがあちこちで両方使われるのでややこしいです。(統一してほしい・・)
PHPの整数型のルール・規則
ルールを箇条書きで記述しますが、ここでわからなくてもいったん先まで読み進めてください。
- 正の整数はそのまま何もつけずに数値を記述
- 負の整数は-をつける
- 正の整数なら+は省略できる
- 2進法は0bに10進法の数値
- 16進法は0x10進法の数値
- 最大値、最小値がある。(大きさは環境による)
※最小値、最大値については定数PHP_INT_MIN、PHP_INT_MAXで出力することができますが、現在のコンピュータではとてつもなく大きな値なので意識する必要はほぼないでしょう。(参考)64bitのPCで最大値9223372036854775807
PHPの整数型の代入(宣言)
10進法の正の整数であればそのまま何もつけずに整数を記述するだけです。
$number = 10; //10進法正の正の値
echo $number. PHP_EOL; //10が出力される
+をつけても同様の結果です
$number = +10; //+はなくてもよい
echo $number. PHP_EOL; //10が出力される
負の値は-を付けます
$number = -10; //負の値も入れられる
echo $number. PHP_EOL; //-10が出力される
16進法であれば0xをつけて使用します。
$number = 0xff; //16進法を使うには0xをつける。FFは10進法の255のこと。
echo $number. PHP_EOL; //255が出力される
PHPの整数型の使い方
変数に格納した10に10を掛け算して出力してみます。
$number = 10;
$number = $number * 10; //10倍して100にする
echo $number. PHP_EOL; //100が出力される
PHPの整数型の確認・チェック
is_int(), is_integer()
整数かどうか?を判定します。
is_int()が真なら整数型、偽ならそれ以外の型です。
is_integer()はis_int()のエイリアス(別名)なので同じ関数です。
$number = 10; //10進法正の正の値
if(is_int($number)){
print "numberの型はintegerです!" . PHP_EOL; //ここが出力される
}
gettype()
gettype()関数の結果の文字列がintegerなら整数型です。
$number = 10; //10進法正の正の値
echo gettype($number). PHP_EOL; //integer と出力される
PHPの整数型の変換
他のデータ型から整数型への変換で主なやり方を2つ紹介します。
専用の関数intval()で変換
関数intval()をつかって変換する方法があります。
$number2 = "100"; //100という文字列を代入
echo gettype($number2). PHP_EOL; //string と出力される
$number2 = intval($number2); //論理型に変換②
echo gettype($number2). PHP_EOL; //integer と出力される
キャストによる明示的な変換
PHPには明示的な変換というキャストというデータ型変換機能があります。
(integer/int)を変数の前に付けます。
文字列から整数へのキャスト
文字列を整数に変換します。
$number2 = "100"; //100という文字列を代入
echo gettype($number2) . PHP_EOL; //string と出力される
$number2 = (integer)$number2; //論理型に変換①
$number2 = (int)$number2; //論理型に変換②
echo gettype($number2). PHP_EOL; //integer と出力される
様々なデータ型から整数へのキャスト
その他の様々なデータ型から整数型にキャストする例を挙げておきます。
var_dump((int)"aaa"); // int(0) 文字列は0に
var_dump((int)"999aaa"); // int(999) 文字列+数値は文字が省略
var_dump((int)"123"); // int(123) 数字だけの文字列は整数に
var_dump((int)"0123"); // int(123) 0は省略
var_dump((int)"4E2"); // int(400) 指数表現も可能
var_dump((int)999.99); // int(999) 小数点は切り捨て
var_dump((int)"999.99"); // int(999) 文字列小数点も同様
var_dump((int)true); // int(1) trueは1
var_dump((int)false); // int(0) falseは0
var_dump((int)null); // int(0) nullは0
コメント