PHPデータ型 チートシート

cheatsheet

変数のデータ型を調べる 🧐

変数に格納されている値のデータ型を確認するための関数です。

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
}
?>

配列関数リファレンス

コメント

タイトルとURLをコピーしました