変数のデータ型を調べる 🧐
変数に格納されている値のデータ型を確認するための関数です。
gettype() – 型名を文字列で取得
変数の型名を小文字の文字列で返します。オブジェクトの場合は “object”、リソースの場合は “resource (タイプ名)”、nullの場合は “NULL” を返します。
<?php
$a = 10; // 整数
$b = 3.14; // 浮動小数点数
$c = "Hello"; // 文字列
$d = true; // 真偽値
$e = null; // NULL
$f = [1, 2, 3]; // 配列
$g = new stdClass(); // オブジェクト
$h = fopen("dummy.txt", "r"); // リソース (ファイルハンドル)
echo gettype($a); // "integer"
echo '<br>';
echo gettype($b); // "double" (歴史的な理由で "float" ではなく "double")
echo '<br>';
echo gettype($c); // "string"
echo '<br>';
echo gettype($d); // "boolean"
echo '<br>';
echo gettype($e); // "NULL"
echo '<br>';
echo gettype($f); // "array"
echo '<br>';
echo gettype($g); // "object"
echo '<br>';
echo gettype($h); // "resource (stream)" (環境により表示が異なる場合あり)
if (is_resource($h)) fclose($h); // リソースを閉じる
?>
gettype() マニュアル
var_dump() – 型と値を詳細表示
変数の型、値、サイズなどの詳細情報を出力します。デバッグ時に非常に役立ちます。
<?php
$a = 10;
$b = "Hello";
$c = [1, "apple", true];
var_dump($a);
// 出力例: int(10)
echo '<br>';
var_dump($b);
// 出力例: string(5) "Hello"
echo '<br>';
var_dump($c);
// 出力例:
// array(3) {
// [0]=>
// int(1)
// [1]=>
// string(5) "apple"
// [2]=>
// bool(true)
// }
?>
var_dump() マニュアル
特定のデータ型か判定する ✅
変数が特定のデータ型であるかどうかを `true` または `false` で判定する関数群です。
関数 |
判定する型 |
説明 |
コード例 |
is_int() / is_integer() / is_long() |
整数 (integer) |
変数が整数型かどうかを判定します。エイリアス関数が複数あります。 |
<?php
var_dump(is_int(10)); // bool(true)
var_dump(is_int(10.0)); // bool(false)
var_dump(is_int("10")); // bool(false)
?>
|
is_float() / is_double() / is_real() |
浮動小数点数 (float) |
変数が浮動小数点数型かどうかを判定します。エイリアス関数が複数あります。 |
<?php
var_dump(is_float(3.14)); // bool(true)
var_dump(is_float(10)); // bool(false)
var_dump(is_float("3.14")); // bool(false)
?>
|
is_string() |
文字列 (string) |
変数が文字列型かどうかを判定します。 |
<?php
var_dump(is_string("Hello")); // bool(true)
var_dump(is_string(123)); // bool(false)
?>
|
is_bool() |
真偽値 (boolean) |
変数が真偽値型かどうかを判定します。 |
<?php
var_dump(is_bool(true)); // bool(true)
var_dump(is_bool(false)); // bool(true)
var_dump(is_bool(0)); // bool(false)
var_dump(is_bool("true"));// bool(false)
?>
|
is_array() |
配列 (array) |
変数が配列かどうかを判定します。 |
<?php
var_dump(is_array([1, 2])); // bool(true)
var_dump(is_array("Array")); // bool(false)
?>
|
is_object() |
オブジェクト (object) |
変数がオブジェクトかどうかを判定します。 |
<?php
$obj = new stdClass();
var_dump(is_object($obj)); // bool(true)
var_dump(is_object([])); // bool(false)
?>
|
is_null() |
NULL |
変数が NULL かどうかを判定します。 |
<?php
$a = null;
$b = 0;
var_dump(is_null($a)); // bool(true)
var_dump(is_null($b)); // bool(false)
// 未定義の変数に対して使用すると E_NOTICE が発生
// var_dump(is_null($undefined_var));
?>
|
is_resource() |
リソース (resource) |
変数がリソース型かどうかを判定します。 |
<?php
$fp = fopen("dummy.txt", "r");
var_dump(is_resource($fp)); // bool(true)
if (is_resource($fp)) fclose($fp);
var_dump(is_resource(123)); // bool(false)
?>
|
is_scalar() |
スカラー型 |
変数がスカラー型 (整数, 浮動小数点数, 文字列, 真偽値) かどうかを判定します。 |
<?php
var_dump(is_scalar(10)); // bool(true)
var_dump(is_scalar(3.14)); // bool(true)
var_dump(is_scalar("Hi")); // bool(true)
var_dump(is_scalar(true)); // bool(true)
var_dump(is_scalar(null)); // bool(false)
var_dump(is_scalar([])); // bool(false)
var_dump(is_scalar(new stdClass())); // bool(false)
?>
|
is_numeric() |
数値または数値形式の文字列 |
変数が数値 (整数 or 浮動小数点数) または数値形式の文字列かどうかを判定します。 |
<?php
var_dump(is_numeric(123)); // bool(true)
var_dump(is_numeric("123")); // bool(true)
var_dump(is_numeric("12.3")); // bool(true)
var_dump(is_numeric("-123")); // bool(true)
var_dump(is_numeric("+123")); // bool(true)
var_dump(is_numeric("1e4")); // bool(true) (指数表記)
var_dump(is_numeric("0xFF")); // bool(true) (16進数 - PHP 7.0.0以降)
var_dump(is_numeric("123a")); // bool(false)
var_dump(is_numeric("hello")); // bool(false)
?>
|
is_callable() |
コールバック関数/メソッド |
変数が関数名やメソッドとして呼び出し可能 (callable) かどうかを判定します。 |
<?php
function myFunc() {}
class MyClass { public static function myStaticMethod() {} public function myMethod() {} }
var_dump(is_callable('myFunc')); // bool(true)
var_dump(is_callable(['MyClass', 'myStaticMethod'])); // bool(true)
$obj = new MyClass();
var_dump(is_callable([$obj, 'myMethod'])); // bool(true)
$closure = function() {};
var_dump(is_callable($closure)); // bool(true)
var_dump(is_callable('undefined_func')); // bool(false)
?>
|
変数操作関数リファレンス
データ型を変換する (キャスト) 🔄
あるデータ型の値を別のデータ型に明示的に変換します。
キャスト演算子
変数名の前に `(変換したい型名)` を記述することで型変換を行います。
キャスト演算子 |
変換後の型 |
説明 |
コード例 |
(int) (integer) |
整数 |
値を整数に変換します。浮動小数点数は小数点以下が切り捨てられます。文字列は先頭の数値部分が解釈されます(解釈できない場合は0)。真偽値は true が 1、false が 0 になります。 |
<?php
var_dump((int) 3.14); // int(3)
var_dump((int) "5 apples"); // int(5)
var_dump((int) "apple 5"); // int(0)
var_dump((int) true); // int(1)
var_dump((int) false); // int(0)
var_dump((int) null); // int(0)
var_dump((int) [1, 2]); // int(1) (Notice発生)
?>
|
(float) (double) (real) |
浮動小数点数 |
値を浮動小数点数に変換します。文字列は先頭の数値部分が解釈されます。 |
<?php
var_dump((float) 10); // float(10)
var_dump((float) "3.14"); // float(3.14)
var_dump((float) "1e2"); // float(100)
var_dump((float) true); // float(1)
var_dump((float) false); // float(0)
?>
|
(string) |
文字列 |
値を文字列に変換します。数値はそのまま文字列に、真偽値は true が “1”、false が “” (空文字) になります。NULL は “” になります。配列は “Array” という文字列に、オブジェクトは通常 “Object” という文字列になりますが、`__toString()` メソッドが定義されていればその返り値になります。 |
<?php
var_dump((string) 123); // string(3) "123"
var_dump((string) 3.14); // string(4) "3.14"
var_dump((string) true); // string(1) "1"
var_dump((string) false); // string(0) ""
var_dump((string) null); // string(0) ""
var_dump((string) [1, 2]); // string(5) "Array" (Warning発生)
class MyStringable { public function __toString() { return 'Hello!'; } }
$obj = new MyStringable();
var_dump((string) $obj); // string(6) "Hello!"
?>
|
(bool) (boolean) |
真偽値 |
値を真偽値に変換します。以下の値は `false` と見なされ、それ以外は `true` と見なされます:
- 整数 `0`
- 浮動小数点数 `0.0`
- 空文字列 `””`
- 文字列 `”0″`
- 要素数が 0 の配列 `[]`
- `NULL`
- (PHP 4 のみ)プロパティを持たないオブジェクト
|
<?php
var_dump((bool) 1); // bool(true)
var_dump((bool) -1); // bool(true)
var_dump((bool) 0); // bool(false)
var_dump((bool) 3.14); // bool(true)
var_dump((bool) 0.0); // bool(false)
var_dump((bool) "Hello"); // bool(true)
var_dump((bool) ""); // bool(false)
var_dump((bool) "0"); // bool(false)
var_dump((bool) [1, 2]); // bool(true)
var_dump((bool) []); // bool(false)
var_dump((bool) null); // bool(false)
?>
|
(array) |
配列 |
値を配列に変換します。スカラー値は、その値を要素 0 に持つ配列になります。NULL は空の配列になります。オブジェクトは、プロパティ名がキー、プロパティ値が値となる連想配列に変換されます(アクセス権に注意)。 |
<?php
var_dump((array) 10); // array(1) { [0]=> int(10) }
var_dump((array) null); // array(0) {}
$obj = new stdClass();
$obj->a = 1; $obj->b = 2;
var_dump((array) $obj); // array(2) { ["a"]=> int(1) ["b"]=> int(2) }
?>
|
(object) |
オブジェクト (stdClass) |
値を `stdClass` オブジェクトに変換します。スカラー値は、`scalar` というプロパティにその値を持つオブジェクトになります。NULL は空のオブジェクトになります。配列は、キーがプロパティ名、値がプロパティ値となるオブジェクトに変換されます(数値キーの扱いに注意)。 |
<?php
var_dump((object) 10); // object(stdClass)#1 (1) { ["scalar"]=> int(10) }
var_dump((object) null); // object(stdClass)#1 (0) {}
$arr = ['a' => 1, 'b' => 2];
var_dump((object) $arr); // object(stdClass)#1 (2) { ["a"]=> int(1) ["b"]=> int(2) }
?>
|
(unset) |
NULL (非推奨) |
値を `NULL` に変換します(キャストは非推奨)。変数を破棄するには `unset()` 関数を使用します。 |
<?php
// (unset) キャストは PHP 8.0.0 で廃止されました
// $a = 10;
// var_dump((unset) $a); // NULL (古いバージョンでの挙動)
// 代わりに unset() を使用
$a = 10;
unset($a);
// var_dump($a); // Notice: Undefined variable: a
?>
|
型変換関数
特定の型へ変換するための専用関数も用意されています。
関数 |
変換後の型 |
説明 |
コード例 |
intval() |
整数 |
変数を整数に変換します。第2引数で基数(2〜36)を指定できます。 |
<?php
var_dump(intval(4.2)); // int(4)
var_dump(intval("123")); // int(123)
var_dump(intval("0xFF", 16)); // int(255)
var_dump(intval("101", 2)); // int(5)
?>
|
floatval() / doubleval() |
浮動小数点数 |
変数を浮動小数点数に変換します。 |
<?php
var_dump(floatval("123.45abc")); // float(123.45)
var_dump(floatval(10)); // float(10)
?>
|
strval() |
文字列 |
変数を文字列に変換します。(string) キャストとほぼ同じです。 |
<?php
var_dump(strval(123)); // string(3) "123"
var_dump(strval(true)); // string(1) "1"
var_dump(strval(null)); // string(0) ""
?>
|
boolval() |
真偽値 |
変数を真偽値に変換します。(bool) キャストと同じルールに従います。 |
<?php
var_dump(boolval(1)); // bool(true)
var_dump(boolval(0)); // bool(false)
var_dump(boolval("")); // bool(false)
var_dump(boolval("0")); // bool(false)
?>
|
型変換 (キャスト) マニュアル
変数操作関数リファレンス
変数の状態を判定する 🤔
変数が空か、あるいは定義されている(セットされている)かを判定します。
empty() – 変数が空かどうか判定
`empty()` は、変数が「空」であると見なされる場合に `true` を返します。以下の値は空と見なされます。Notice エラーを発生させずに未定義の変数もチェックできます。
""
(空文字列)
0
(整数)
0.0
(浮動小数点数)
"0"
(文字列)
null
false
[]
(空の配列)
- 宣言されていない変数
<?php
$a = 0;
$b = "";
$c = "0";
$d = null;
$e = false;
$f = [];
// $g は未定義
var_dump(empty($a)); // bool(true)
var_dump(empty($b)); // bool(true)
var_dump(empty($c)); // bool(true) ⚠️ 文字列 "0" も空とみなされる
var_dump(empty($d)); // bool(true)
var_dump(empty($e)); // bool(true)
var_dump(empty($f)); // bool(true)
var_dump(empty($g)); // bool(true) (未定義でも Notice が出ない)
$h = "hello";
$i = 1;
$j = [1];
var_dump(empty($h)); // bool(false)
var_dump(empty($i)); // bool(false)
var_dump(empty($j)); // bool(false)
?>
empty() マニュアル
isset() – 変数が定義され NULL でないか判定
`isset()` は、変数が宣言されており、かつその値が `NULL` でない場合に `true` を返します。複数の変数を引数に取ることができ、その場合はすべての変数が `isset()` の条件を満たす場合に `true` を返します。
<?php
$a = 0;
$b = "";
$c = false;
$d = null;
// $e は未定義
var_dump(isset($a)); // bool(true)
var_dump(isset($b)); // bool(true)
var_dump(isset($c)); // bool(true)
var_dump(isset($d)); // bool(false) ⚠️ NULL は false
var_dump(isset($e)); // bool(false) (未定義は false)
$arr = ['key1' => 'value1', 'key2' => null];
var_dump(isset($arr['key1'])); // bool(true)
var_dump(isset($arr['key2'])); // bool(false) ⚠️ 値が NULL のため false
var_dump(isset($arr['key3'])); // bool(false) (存在しないキーは false)
// 複数変数のチェック
$x = 1;
$y = "hello";
$z = null;
var_dump(isset($x, $y)); // bool(true)
var_dump(isset($x, $y, $z)); // bool(false) (z が NULL のため)
?>
isset() マニュアル
unset() – 変数の割り当てを解除
`unset()` は変数を破棄します。破棄された変数は未定義の状態となり、`isset()` は `false` を返すようになります。
<?php
$a = 10;
var_dump(isset($a)); // bool(true)
unset($a);
var_dump(isset($a)); // bool(false)
// echo $a; // Notice: Undefined variable: a
$arr = ['one' => 1, 'two' => 2];
unset($arr['one']);
var_dump($arr); // array(1) { ["two"]=> int(2) }
?>
unset() マニュアル
データ型固有の基本操作 🛠️
文字列 (String) 操作
操作 |
説明 |
コード例 |
結合 |
ドット (`.`) 演算子で文字列を連結します。`.= ` で追記も可能です。 |
<?php
$str1 = "Hello";
$str2 = " World";
$greeting = $str1 . $str2; // "Hello World"
$greeting .= "!"; // "Hello World!"
echo $greeting;
?>
|
長さ取得 |
`strlen()` 関数でバイト単位の長さを取得します(マルチバイト文字は注意)。マルチバイト対応は `mb_strlen()`。 |
<?php
$str = "こんにちは"; // UTF-8
echo strlen($str); // 15 (バイト数)
echo mb_strlen($str); // 5 (文字数)
?>
|
部分文字列 |
`substr()` 関数で文字列の一部を切り出します。マルチバイト対応は `mb_substr()`。 |
<?php
$str = "abcdefg";
echo substr($str, 1, 3); // "bcd" (1文字目から3文字分)
echo substr($str, -2); // "fg" (末尾から2文字)
$mb_str = "あいうえお";
echo mb_substr($mb_str, 1, 2); // "いう"
?>
|
検索 |
`strpos()` で最初に出現する位置、`strstr()` で最初に出現する位置以降の文字列を取得。大文字小文字区別しない版は `stripos()`, `stristr()`。マルチバイト対応は `mb_strpos()`, `mb_strstr()` など。 |
<?php
$haystack = "The quick brown fox";
$needle = "brown";
$pos = strpos($haystack, $needle);
if ($pos !== false) {
echo "'$needle' found at position: " . $pos; // 'brown' found at position: 10
} else {
echo "'$needle' not found";
}
echo '<br>';
echo strstr($haystack, "quick"); // "quick brown fox"
?>
|
置換 |
`str_replace()` で文字列内の特定の部分を置換します。正規表現を使う場合は `preg_replace()`。 |
<?php
$body = "You should eat fruits, vegetables, and fiber";
$healthy = ["fruits", "vegetables", "fiber"];
$yummy = ["pizza", "beer", "ice cream"];
$newbody = str_replace($healthy, $yummy, $body);
echo $newbody; // "You should eat pizza, beer, and ice cream"
?>
|
分割 |
`explode()` でデリミタ(区切り文字)によって文字列を配列に分割します。 |
<?php
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
print_r($pieces); // Array ( [0] => piece1 [1] => piece2 ... )
?>
|
結合 (配列から) |
`implode()` (または `join()`) で配列の要素を文字列で連結します。 |
<?php
$arr = ['lastname', 'email', 'phone'];
$str = implode(",", $arr);
echo $str; // "lastname,email,phone"
?>
|
文字列関数リファレンス
数値 (Integer, Float) 操作
操作 |
説明 |
コード例 |
算術演算 |
基本的な四則演算 (`+`, `-`, `*`, `/`)、剰余 (`%`)、べき乗 (`**`) が行えます。 |
<?php
$a = 10; $b = 3;
echo $a + $b; // 13
echo $a - $b; // 7
echo $a * $b; // 30
echo $a / $b; // 3.333...
echo $a % $b; // 1
echo $a ** $b; // 1000
?>
|
インクリメント/デクリメント |
`++` (加算), `–` (減算) 演算子で値を1増やしたり減らしたりします。前置 (`++$a`) と後置 (`$a++`) で返す値が異なります。 |
<?php
$a = 5;
echo ++$a; // 6 (先に増やしてから返す)
echo $a++; // 6 (返してから増やす)
echo $a; // 7
$b = 5;
echo --$b; // 4 (先に減らしてから返す)
echo $b--; // 4 (返してから減らす)
echo $b; // 3
?>
|
比較 |
`==`, `!=`, `<`, `>`, `<=`, `>=` などで比較します。厳密な比較 (型も比較) は `===`, `!==` を使用します。宇宙船演算子 (`<=>`) は PHP 7 以降で利用可能です。 |
<?php
$x = 5; $y = "5"; $z = 10;
var_dump($x == $y); // bool(true) (値が等しい)
var_dump($x === $y); // bool(false) (型が異なる)
var_dump($x < $z); // bool(true)
// 宇宙船演算子 <=>
// $a < $b なら -1, $a == $b なら 0, $a > $b なら 1
var_dump(1 <=> 2); // int(-1)
var_dump(1 <=> 1); // int(0)
var_dump(2 <=> 1); // int(1)
?>
|
数学関数 |
絶対値 `abs()`, 四捨五入 `round()`, 切り上げ `ceil()`, 切り捨て `floor()`, 乱数 `rand()`, `mt_rand()` など、多くの数学関数が用意されています。 |
<?php
echo abs(-10); // 10
echo round(3.7); // 4
echo round(3.4); // 3
echo ceil(3.1); // 4
echo floor(3.9); // 3
echo rand(1, 10); // 1から10の間のランダムな整数 (mt_rand() の方が高速で推奨)
echo mt_rand(1, 100); // 1から100の間の質の高いランダムな整数
?>
|
数学関数リファレンス
配列 (Array) 操作
操作 |
説明 |
コード例 |
要素アクセス |
キー (インデックスまたは文字列) を `[]` 内に指定して要素にアクセスします。 |
<?php
$indexed = [10, 20, 30];
echo $indexed[1]; // 20
$assoc = ['name' => 'Alice', 'age' => 30];
echo $assoc['name']; // Alice
?>
|
要素追加 |
`[]` (キー指定なし) で末尾に追加、キーを指定して追加/上書き、`array_push()` で末尾に追加、`array_unshift()` で先頭に追加。 |
<?php
$arr = [1, 2];
$arr[] = 3; // [1, 2, 3]
$arr[5] = 5; // [1, 2, 3, 5=>5] (キーを指定)
array_push($arr, 6); // [1, 2, 3, 5=>5, 6]
array_unshift($arr, 0); // [0=>0, 1=>1, 2=>2, 3=>3, 6=>5, 7=>6] (キーが振り直される)
print_r($arr);
?>
|
要素削除 |
`unset()` で指定したキーの要素を削除、`array_pop()` で末尾の要素を削除して取得、`array_shift()` で先頭の要素を削除して取得。 |
<?php
$arr = ['a' => 1, 'b' => 2, 'c' => 3];
unset($arr['b']); // ['a' => 1, 'c' => 3]
$last = array_pop($arr); // $last is 3, $arr is ['a' => 1]
$first = array_shift($arr); // $first is 1, $arr is []
print_r($arr);
?>
|
要素数取得 |
`count()` (または `sizeof()`) で配列の要素数を取得します。 |
<?php
$arr = [10, 20, 30];
echo count($arr); // 3
?>
|
キー/値の取得 |
`array_keys()` でキーのみの配列を、`array_values()` で値のみの配列を取得します。 |
<?php
$arr = ['name' => 'Bob', 'age' => 25];
$keys = array_keys($arr); // ['name', 'age']
$values = array_values($arr); // ['Bob', 25]
print_r($keys);
print_r($values);
?>
|
検索 |
`in_array()` で値が存在するかどうか、`array_search()` で値に対応する最初のキーを検索します。 |
<?php
$arr = ['a', 'b', 'c', 'b'];
var_dump(in_array('b', $arr)); // bool(true)
echo array_search('b', $arr); // 1 (最初のキー)
var_dump(in_array('d', $arr)); // bool(false)
?>
|
結合 |
`array_merge()` で複数の配列を結合します。キーが重複する場合、後の配列の値で上書きされます(数値キーは振り直される)。`+` 演算子は、重複するキーがある場合、先の配列の値を優先します。 |
<?php
$arr1 = ['a' => 1, 'b' => 2];
$arr2 = ['b' => 3, 'c' => 4];
$merged = array_merge($arr1, $arr2); // ['a'=>1, 'b'=>3, 'c'=>4]
$added = $arr1 + $arr2; // ['a'=>1, 'b'=>2, 'c'=>4]
print_r($merged);
print_r($added);
?>
|
反復処理 |
`foreach` ループで配列の各要素を処理します。キーと値の両方を取得することも可能です。 |
<?php
$colors = ['red', 'green', 'blue'];
foreach ($colors as $color) {
echo $color . ' '; // red green blue
}
echo '<br>';
$user = ['name' => 'Charlie', 'age' => 40];
foreach ($user as $key => $value) {
echo "$key: $value "; // name: Charlie age: 40
}
?>
|
配列関数リファレンス
コメント