章: 第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アプリで最も頻繁に扱うデータ型の操作を身につけましょう。