第04回: 型変換 — 外部入力を安全に扱う第一歩

章: 第1章: 文法の土台

フォームから届いた「数字」が、実は文字列だった——気づいていましたか?

Webアプリでは、フォームの入力・クエリパラメータ・APIレスポンスなど、外部から届くデータはすべて文字列として届きます。そのまま計算や比較に使うと、型の違いによる予期せぬバグが発生します。明示的な型変換(キャスト)がその対策です。

まずコードを動かしてみる


<?php
$input = '120';
$total = (int)$input + 30;
echo $total;

(int) のように型名をカッコで囲むことをキャストと呼びます。これで文字列 '120' を整数 120 に変換してから計算できます。

キャスト方法の比較

方法 書き方 特徴
キャスト演算子 (int)$val シンプルで読みやすい
settype() settype($val, 'int') 変数自体を変更する
intval() intval($val) 変換失敗時に 0 を返す
(bool) (bool)$val 空文字・0・null は false

悪い例(型変換なしで計算)


<?php
$qty = $_GET['qty']; // 文字列として届く
$price = 500;
echo $qty * $price; // 動くが意図が不明確

良い例(明示的にキャストして計算)


<?php
$qty = (int)($_GET['qty'] ?? 0); // 明示的に整数化
$price = 500;
echo $qty * $price; // 意図が明確で安全

チェックポイント: 外部から届いた値は必ずキャストしてから使いましょう。特に $_GET$_POST$_COOKIE の値は文字列です。数値として扱うなら (int)(float) で変換するのが基本です。

まとめ & 次のステップ

  • フォーム入力・クエリパラメータは文字列として届く
  • (int) (float) (bool) などのキャストで型を明示的に変換できる
  • キャストを使うとコードの意図が明確になり、バグも防ぎやすくなる
  • intval() は失敗時に 0 を返すため、エラーで止まりたくない場面に使える
  • 外部入力は常に「型を確認してから使う」習慣をつける

次回は 文字列基礎を学びます。Webアプリで最も頻繁に扱うデータ型の操作を身につけましょう。

Related Articles