@ PHP

cast:型変換

型の定義方法

PHPでは型を自動で定義しています。変数に値を代入すると、その値によって変数の型が決まります。

cast_01.php

<?php
$a = 5; //$aは整数型になる。
$b = "5"; //$bは文字列型になる。
$c = "あいう"; //$cは文字列型。
$d = 0.24; //$dは浮動小数点型になる。
$e= True; //$eは論理型になる。
?>

型の自動変換

代入する値に応じて自動的に型が変化します。

cast_02.php

<?php
$a = 1234;
$a = "文字列";
$a = FALSE;
?>

型の自動解釈

文字列型と整数型の結合

cast_03.php

<?php
//整数型の$scoreと、文字列を「.」で文字列結合させる
$score = 3;
$a ="得点は".$score."点です";
echo $a;
var_dump($a);
?>

文字列結合が行われた時点で$scoreを文字列型に自動変換されます。

文字列と数値の計算

cast_04.php

<?php
//$resultに数値と文字列の計算結果を代入する
$result = 100 - "30点";
echo $result;
var_dump($result);
?>

計算の結果は、計算式の「-」が入った為に、PHPが「$result」を整数型と解釈したため、文字が消えてしまいます。計算式を入れるなどして数値としての値を求めると、PHPは数値として解釈できる範囲までを自動的に解釈して計算し、文字列の部分は無視されることになります。

未定義の変数

cast_05.php

<?php
//未定義の変数を出力します。
$a = "名前は"$name."です";
echo $a;
var_dump($a);
$b = $number + 8;
echo $b;
var_dump($b);
?>

変数が未定義の場合その変数を文字列として扱った時には「””」(空文字)が代入されたものとみなし、実行の結果はエラーになります。数値として扱った場合には「0」が代入されたとみなされます。

キャスティング

値を別の型に変換するときは、型名を()で囲ったものを変数の前で定義します。この操作をキャスティングを言います。

cast_06.php

<?php
//$aに整数を代入します。
$a = 1;
//$aに式を代入します。
$a = $a*0.5;
//整数にキャストします。
$b = (int)$a;
echo $a."<br>\n";
echo $b;
?>
書式 キャスト後の型
(int)(integer) 整数
(float)(double)(real) 浮動少数点
(bool)(boolean) 論理型
(string) 文字列
(array) 配列
(object) オブジェクト

strval()関数による変換

strval()関数を使うと、スカラー型の変数を文字列に変換できます。

cast_07.php

<?php
$a = true;
$b = 1234;
$str = strval($a);
$str2 = strval($b);
echo $str."<br>\n";
echo $str2;
var_dump($str);
var_dump($str2);
?>

settype()関数による変換

settype()関数による変換は第1引数に型を変更したい変数を、第2引数にデータ型を指定します。

cast_08.php

<?php
$var = 3.14; //$varの値は「3.14」浮動小数点型
settype($var, "integer"); //整数型に変換したので$varの値は「3」となる
echo $var;
?>