PHP 7.1.12 Released

is_string

(PHP 4, PHP 5, PHP 7)

is_string変数の型が文字列かどうかを調べる

説明

bool is_string ( mixed $var )

指定した変数の型が文字列かどうかを調べます。

パラメータ

var

評価する変数。

返り値

var の型が string である場合に TRUE、それ以外の場合に FALSE を返します。

例1 is_string() の例

<?php
$values 
= array(falsetruenull'abc''23'23'23.5'23.5''' ''0'0);
foreach (
$values as $value) {
    echo 
"is_string(";
    
var_export($value);
    echo 
") = ";
    echo 
var_dump(is_string($value));
}
?>

上の例の出力は以下となります。

is_string(false) = bool(false)
is_string(true) = bool(false)
is_string(NULL) = bool(false)
is_string('abc') = bool(true)
is_string('23') = bool(true)
is_string(23) = bool(false)
is_string('23.5') = bool(true)
is_string(23.5) = bool(false)
is_string('') = bool(true)
is_string(' ') = bool(true)
is_string('0') = bool(true)
is_string(0) = bool(false)

参考

  • is_float() - 変数の型が float かどうか調べる
  • is_int() - 変数が整数型かどうかを検査する
  • is_bool() - 変数が boolean であるかを調べる
  • is_object() - 変数がオブジェクトかどうかを検査する
  • is_array() - 変数が配列かどうかを検査する

add a note add a note

User Contributed Notes 4 notes

up
18
laszlo dot heredy shift-two gmail etc
3 years ago
Using is_string() on an object will always return false (even with __toString()).

<?php
class B {
  public function
__toString() {
    return
"Instances of B() can be treated as a strings!\n";
  }


$b = new B();
print(
$b); //Instances of B() can be treated as a strings!
print(is_string($b) ? 'true' : 'false'); //false
?>
up
1
Peter Barney
2 months ago
As noted earlier, is_string() returns false on an object that has a __toString() method. Here is a simple way to do a check that will work:

<?php
// determine if the passed argument can be treated like a string.
function is_stringy($text) {
    return (
is_string($text) || (is_object($text) && method_exists($text, '__toString' ));
}
up
-30
slicky at newshelix dot com
16 years ago
Be aware that this function could result into unwanted results if you check single chars in an array.
For instance:
You have a simple string and want to repeat this string evertime it ends.

<?php
for ($i=0; $i < strlen($string);$i++){
    if(!
is_string($key[$x]))
       
$x = 0;
    echo
$key[$x];
   
$x++;
}
?>

This will print you out the key, but won't iterate it since $x won't be reset. is_string function will give out true at element in that string, even if it doesn't exist. for instance is_string $key[1000] while your string is just 10chars long.
However this doesn't matter just use $key[$x] == '' instead.
Of course you won't use this to iterate a string, but you might come across something where this get useful, for instance for a en/decrypt engine.
up
-78
Sammy Moshe
4 years ago
The cool thing about this function is that it lets you be a lot more specific with your logic than you could have been before. And since I'm all about explicit control, when it comes to code, this one gets me all hot and bothered.

<?php
    
//Like this. You could also do the reverse of it.
    
if(is_string($variable) ) && !is_array($variable) ){
         
//Do something that appeals to your controlling nature.
    
}

?>

God bless those php dev guys for thinking of everything.
To Top