ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
明示キャスト(推奨)
$str = '42';
$num = (int)$str; // 42 (int)
$flt = (float)$str; // 42.0
$num = 42;
$str = (string)$num; // "42"
$x = 1;
$b = (bool)$x; // true
$obj = ['a' => 1, 'b' => 2];
$o = (object)$obj; // stdClass { a: 1, b: 2 }
echo $o->a; // 1
$o = new stdClass();
$o->a = 1;
$arr = (array)$o; // ['a' => 1]
// null へのキャスト (PHP 7.2 で deprecated, PHP 8.0 で削除)
$x = (null)$y; // ❌ 使わない
関数による型変換
intval('42'); // 42
intval('42abc'); // 42 (前から取れるだけ)
intval('abc'); // 0
intval('0x1A', 0); // 26 (基数 0 = 自動検出)
intval('010', 0); // 8 (8進数)
intval('1010', 2); // 10 (2進数)
floatval('3.14'); // 3.14
floatval('1e3'); // 1000.0
strval(42); // "42"
strval(3.14); // "3.14"
strval(true); // "1"
strval(false); // ""
strval(null); // ""
boolval(0); // false
boolval('false'); // true ★ 文字列 "false" は true!
settype($var, 'integer'); // $var を int に変換 (参照渡し)
gettype($var); // 型名を文字列で返す
get_debug_type($var); // gettype の改善版 (PHP 8.0+)
暗黙的型変換 (Type Juggling)
// 数値演算で文字列が数値化
"5" + 3; // 8 (int)
"5.5" + 3; // 8.5 (float)
"5abc" + 3; // 8 + Warning (PHP 8.0+)
// PHP 7.x: 8 + Notice
"abc" + 3; // 3 + TypeError (PHP 8.0+)
// 文字列連結で数値が文字列化
"foo" . 42; // "foo42"
42 . "foo"; // "42foo"
// 比較
0 == "abc"; // false (PHP 8.0+) / true (PHP 7.x) ★ 大きな変更
0 == "0"; // true
"1" == "01"; // true (両方数値文字列なので数値比較)
"10" == "1e1"; // true (科学記法)
100 == "1e2"; // true
[] == false; // true
null == false; // true
null == 0; // true
"" == 0; // false (PHP 8.0+) / true (PHP 7.x)
PHP 8.0 の比較ルール変更
「数値 vs 数値以外の文字列」の == 比較は、PHP 7 まで「文字列を数値に変換」していましたが、PHP 8 では「数値を文字列に変換」に変わりました。
| 比較 | PHP 7.x | PHP 8.0+ |
|---|---|---|
0 == "abc" | true(文字列 → 0) | false(0 → "0") |
0 == "" | true | false |
0 == "0" | true | true(変わらず) |
"1" == "01" | true | true(変わらず) |
falsy 値の一覧
if ($x) や !$x で false 扱いになる値:
false0(int)0.0(float)-0.0""(空文字)"0"★ 注意("false" や "0.0" は truthy)null[](空配列)SimpleXMLElementの空オブジェクト
if (0) { /* skip */ }
if ("0") { /* skip */ } // ★ "0" は falsy
if ("0.0") { /* run */ } // "0.0" は truthy
if ("false") { /* run */ } // 文字列 "false" は truthy
if (null) { /* skip */ }
if ([]) { /* skip */ }
if (new stdClass) { /* run */ } // 空オブジェクトは truthy
// 厳密判定
$x === null; // null のみ
$x === false; // false のみ
$x === 0; // 0 のみ
$x === ''; // 空文字のみ
strict_types で厳密化
ファイル先頭に declare(strict_types=1); を書くと、関数引数・戻り値の型チェックが厳しくなり、暗黙変換が TypeError になります:
<?php
declare(strict_types=1);
function add(int $a, int $b): int {
return $a + $b;
}
add(1, 2); // 3
add("1", "2"); // ❌ TypeError (strict_types 無しなら 3)
add(1.5, 2); // ❌ TypeError
// 数値文字列を渡したいときは明示変換
add((int)"1", (int)"2"); // 3
JavaScript の == vs === との対比
| 式 | PHP == | PHP === | JS == | JS === |
|---|---|---|---|---|
1 == "1" | true | false | true | false |
0 == false | true | false | true | false |
null == undefined | N/A | N/A | true | false |
NaN == NaN | true (PHP) | true | false | false |
結論: PHP も JS も、基本 === を使うのが安全。
var_dump でデバッグ
var_dump("42"); // string(2) "42"
var_dump(42); // int(42)
var_dump(42.0); // float(42)
var_dump(true); // bool(true)
var_dump(null); // NULL
var_dump([1, 2]); // array(2) { [0]=> int(1) [1]=> int(2) }
var_dump((array)"hello"); // array(1) { [0]=> string(5) "hello" }
// get_debug_type (PHP 8.0+)
echo get_debug_type(42); // int
echo get_debug_type(new stdClass); // stdClass
echo get_debug_type(fopen('php://memory', 'r')); // resource (stream)
FAQ
Q: (int)"3.99" はいくつ?
A: 3。小数部は切り捨て(負数も 0 方向)。四捨五入したいなら round()。
Q: 配列 → 文字列のキャストは?
A: (string)[1,2,3] は "Array" + Warning。実用上は implode(',', $arr) や json_encode。
Q: オブジェクト → 配列は private プロパティも入る?
A: 入りますが、キーが "\0ClassName\0prop" のようになります。get_object_vars の方が扱いやすい。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
同階層のページ
- 型変換
- ジェネリクス
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?