定義と使い方
- PHPバージョン
- 4+
is_string()関数は、与えられた値が文字列(string)タイプであるかを確認します。引数として渡された値が文字列タイプであればtrueを返し、そうでなければfalseを返します。
文字列(string)タイプは、文字列を表すデータタイプです。文字列はシングルクォーテーション('')またはダブルクォーテーション("")で囲まれている必要があります。
基本例
/* 文字列 */
var_dump(is_string('ようこそ')); // bool(true)
var_dump(is_string('10')); // bool(true)
var_dump(is_string('0')); // bool(true)
var_dump(is_string('')); // bool(true) -> 空の文字列も文字列
var_dump(is_string(' ')); // bool(true) -> 空白文字列も文字列
var_dump(is_string("ダブルクォーテーションで囲んだ文字列")); // bool(true) -> ダブルクォーテーションで囲んだ文字列も文字列
/* 整数 */
var_dump(is_string(10)); // bool(false) -> 整数は文字列ではない
/* 浮動小数点数 */
var_dump(is_string(10.25)); // bool(false) -> 浮動小数点数は文字列ではない
/* ブール */
var_dump(is_string(true)); // bool(false) -> ブールは文字列ではない
var_dump(is_string(false)); // bool(false) -> ブールは文字列ではない
/* null */
var_dump(is_string(null)); // bool(false) -> nullは文字列ではない
/* 数値演算の結果 */
var_dump(is_string(1 + 1)); // bool(false) -> 数値演算の結果は文字列ではない
var_dump(is_string(10 / 2)); // bool(false) -> 数値演算の結果は文字列ではない
/* 文字列の結合 */
var_dump(is_string('1' . '1')); // bool(true) -> 文字列結合の結果は文字列
/* 文字列と数値の結合 */
var_dump(is_string('1' . 1)); // bool(true) -> 文字列と数値の結合結果は文字列
/* 型キャスト(Type Casting, 型変換) */
var_dump(is_string((string) 1)); // bool(true) -> 整数を文字列に型変換
var_dump(is_string((string) 1.9)); // bool(true) -> 浮動小数点数を文字列に型変換
var_dump(is_string((string) true)); // bool(true) -> ブールを文字列に型変換
ご確認ください!gettype()関数は、指定された値のデータ型を文字列として返します。
構文
is_string(mixed $value): bool
引数
$value |
必須。文字列(string)タイプかを確認する値です。 |
|---|
戻り値
引数として渡された値が文字列タイプであれば true を返し、そうでなければ false を返します。
注意点
is_string()関数を使用する際、いくつか注意すべき点があります。
オブジェクトの文字列形式の確認
is_string() 関数は、オブジェクトの __toString() メソッドが実装されていても、常に false を返します。
class MyObject {
public function __toString() {
return "This is an object";
}
}
$obj = new MyObject();
var_dump(is_string($obj)); // bool(false)
var_dump(is_object($obj)); // bool(true)
コードの補足説明is_object()関数は、与えられた値がオブジェクトタイプであるかを確認します。引数として渡された値がオブジェクトタイプであればtrueを返し、そうでなければfalseを返します。
このような動作は、is_string()関数がオブジェクトの__toString()メソッドを呼び出さないためです。is_string()関数は入力値が文字列であるかを検査することが目的であるため、オブジェクトの__toString()メソッドが返す文字列であっても、is_string()関数はfalseを返します。これらは文字列のように出力されることはありますが、実際のタイプは「オブジェクト」だからです。
空の文字列とnull値の区別
空の文字列('')は文字列タイプと見なされますが、null はそうではありません。この点に注意し、空の文字列と null を区別して処理する必要があります。
null値を確認するには、is_null()関数を使用してください。
補足説明is_null()関数は、与えられた値が NULL タイプであるかを確認します。引数として渡された値がNULLタイプであればtrueを返し、そうでなければfalseを返します。
$empty_string = '';
$null_value = null;
var_dump(is_string($empty_string)); // true
var_dump(is_string($null_value)); // false
var_dump(is_null($empty_string)); // false
var_dump(is_null($null_value)); // true
is_string()とgettype()関数の比較
PHPで変数の文字列タイプを確認するには、主にis_string()とgettype()関数の二つが主に使われます。この二つの関数間にはいくつかの違いがあります。以下では、この二つの関数を比較し、それぞれの特徴を見ていきましょう。
補足説明gettype()関数は変数のデータタイプを文字列として返します。変数のタイプが文字列の場合、'string'という文字列を返します。
$str1 = 'Hello, world!';
$str2 = 'ようこそ。はじめまして!';
$str3 = '';
echo gettype($str1); // 'string'
echo gettype($str2); // 'string'
echo gettype($str3); // 'string'
単純なタイプ確認の際、is_string()関数はgettype()関数よりも直感的で効率的です。
is_string()関数は入力値が文字列であるかを確認することに焦点を当てており、コードを簡潔にし実行速度を速くしてくれます。これは文字列であるかを確認する際には最も適した選択です。反面、gettype()関数は入力値のタイプを文字列として返すことに重点を置いているため、is_string()関数よりも多くの処理を必要とします。
しかし、入力値のタイプを正確に知る必要がある場合や、入力値のタイプに応じて異なる処理を行う場合には、gettype()関数の方が適している場合があります。このような場合には、is_string()関数では十分な情報を得ることができないためです。
したがって、与えられた状況に応じて二つの関数の中から適切な方を選択して使用することが重要です。
- 単純に入力値が文字列であるかを確認したい場合には、
is_string()関数を使用するのが良いでしょう。 - 入力値のデータタイプを正確に知る必要がある場合には、
gettype()関数を使用するのが良いでしょう。