いままで計算式として使っていたものを、文字として出力したり、文字として出力していたものを、計算させたりしたいこともあります。
また、実数計算によってを整数計算に変換したり、整数計算を実数計算に変換したいこともありますし、思わぬところでデータ型の違いによるバグが発生することもあります。
その時は型変換(キャスト)を行う文法が用意されています。
ただし、計算式そのものを型変換することはできませんので、各データそれぞれ変数に格納し、型変換してから処理する必要があります。
注)PHP、JavaScritptは他の言語と違い、文字列結合演算子、算術演算子によって、変数を自動的に型変換してくれますが、原理を理解していないとバグを解決できなくなってしまいますので注意が必要です。
<meta http-equiv="Content-Type" content="text/html"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <script type="text/javascript"> var a = "530"; var b = "0001"; document.write(parseInt(a) - parseInt(b)); </script>
529
<?php header("Content-type: text/plain; charset=utf-8"); $a = "530"; $b = "0001"; echo (integer)$a - (integer)$b; //echo (int)$a - (int)$b; //echo settype($a, "integer") - settype($b, "integer"); ?>
529
<meta http-equiv="Content-Type" content="text/plain"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <script type="text/javascript"> var a = 530; var b = 0001; a = String(a); a = a.replace(/^([0-9]{1})$/, "00$1"); a = a.replace(/^([0-9]{2})$/, "0$1"); b = String(b); b = b.replace(/^([0-9]{1})$/, "000$1"); b = b.replace(/^([0-9]{2})$/, "00$1"); b = b.replace(/^([0-9]{3})$/, "0$1"); document.write(a + "-" + b); </script>
530-0001
<?php $a = 530; $b = 0001; $zip1 = (string)$a; $zip1 = preg_replace("/^([0-9]{1})$/","00$1",$zip1); $zip1 = preg_replace("/^([0-9]{2})$/","0$1",$zip1); $zip2 = (string)$b; $zip2 = preg_replace("/^([0-9]{1})$/","000$1",$zip2); $zip2 = preg_replace("/^([0-9]{2})$/","00$1",$zip2); $zip3 = preg_replace("/^([0-9]{3})$/","0$1",$zip2); echo $zip1 . "-" . $zip2; ?>
530-0001