プログラミング言語には、「文字列」と「数値」の扱い方に違いがあります。
「型」の違いとも言います。
言語によって様々ですが、共通点は多く、ここではPHPのそれを紹介していきます。
その規則を守らないとバグやエラーが起きると考えてください。
規則の重要性は慣れてくると身に着くものなので、まずは覚えるようにするとよいです。
文字列
"田中太郎"
や'100'
のようにクォートで囲んで表現します。
テキストだけでなく、数字(数値)もクォートで囲むと文字列として扱われます。
数値
100
や 3.14
のようにクォートなしで表現します。
計算(四則演算)に直接使用できます。
PHPは自動で型変換される
PHPは動的型付け言語となっており、"50" + 10
のような計算では文字列が自動的に数値に変換されて結果は60
になります。
文字列と数値の比較
比較時は注意が必要で、"100" == 100
はtrue
(値のみ比較)ですが、"100" === 100
はfalse
(型も含めて比較)になります。
明示的な型変換も可能で、(int)"123"
で文字列を整数に、(string)123
で数値を文字列に変換できます。
初学者は特に==
と===
の違いを理解することが重要です。
参考コード
.phpファイルとして保存し、Webサーバーで実行してください
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PHP文字列と数値の違い</title>
<style>
h1 {
color: #333;
text-align: center;
border-bottom: 2px solid #4CAF50;
padding-bottom: 10px;
}
h2 {
color: #4CAF50;
border-left: 3px solid #4CAF50;
padding-left: 10px;
}
.result {
background: #e8f5e8;
padding: 15px;
border: 1px solid #4CAF50;
margin: 15px 0;
font-family: monospace;
border-radius: 4px;
}
.note {
background: #fff3cd;
border: 1px solid #ffeaa7;
padding: 15px;
margin: 15px 0;
border-radius: 4px;
}
.explanation {
background: #f8f9fa;
padding: 15px;
margin: 10px 0;
border-left: 4px solid #6c757d;
border-radius: 4px;
}
</style>
</head>
<body>
<h1>PHP文字列と数値の違い</h1>
<h2>1. 文字列とは</h2>
<div class="explanation">
文字列は " " で囲みます
</div>
<div class="result">
<?php
// 文字列は " " で囲む
$name = "田中太郎";
$message = "こんにちは";
echo $name . "<br>";
echo $message;
?>
</div>
<h2>2. 数字も文字列にできる</h2>
<div class="explanation">
数字を " " で囲むと文字列になります
</div>
<div class="result">
<?php
// 数字を " " で囲むと文字列になる
$age = "25";
$price = "1000";
echo "年齢: " . $age . "<br>";
echo "価格: " . $price;
?>
</div>
<h2>3. 数値とは</h2>
<div class="explanation">
数値は " " で囲みません
</div>
<div class="result">
<?php
// 数値は " " で囲まない
$age = 25;
$price = 1000;
$weight = 65.5;
echo "年齢: " . $age . "<br>";
echo "価格: " . $price . "<br>";
echo "体重: " . $weight;
?>
</div>
<h2>4. 違いを比べてみる</h2>
<div class="explanation">
見た目は同じですが、実は違います
</div>
<div class="result">
<?php
$str_num = "100"; // 文字列
$real_num = 100; // 数値
echo "文字列の100: " . $str_num . "<br>";
echo "数値の100: " . $real_num . "<br>";
echo "見た目は同じだが実は違う";
?>
</div>
<h2>5. 計算してみる</h2>
<div class="explanation">
どちらも計算できます(文字列が自動で数値になる)
</div>
<div class="result">
<?php
$str = "50"; // 文字列
$num = 50; // 数値
echo "文字列の50 + 10 = " . ($str + 10) . "<br>";
echo "数値の50 + 10 = " . ($num + 10) . "<br>";
echo "どちらも計算できる!";
?>
</div>
<h2>6. 比較の違い</h2>
<div class="explanation">
== と === では結果が変わります
</div>
<div class="result">
<?php
$str = "100";
$num = 100;
// == は値だけ比較
if ($str == $num) {
echo "== で比較: 同じ<br>";
} else {
echo "== で比較: 違う\n";
}
// === は型も比較
if ($str === $num) {
echo "=== で比較: 同じ<br>";
} else {
echo "=== で比較: 違う\n";
}
?>
</div>
<h2>7. 型を変換する</h2>
<div class="explanation">
(int) や (string) で型を変換できます
</div>
<div class="result">
<?php
$str = "123";
// 文字列を数値に変換
$number = (int)$str;
echo "文字列を数値に: " . $number . "<br>";
// 数値を文字列に変換
$text = (string)$number;
echo "数値を文字列に: " . $text;
?>
</div>
<div class="note">
<strong>まとめ:</strong>
<ul>
<li><strong>文字列:</strong> " " で囲む</li>
<li><strong>数値:</strong> " " で囲まない</li>
<li><strong>計算:</strong> 文字列でも自動で数値になる</li>
<li><strong>==:</strong> 値だけ比較</li>
<li><strong>===:</strong> 型も含めて比較</li>
<li><strong>変換:</strong> (int) で数値、(string) で文字列</li>
</ul>
</div>
</body>
</html>