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.
is_string
(PHP 4, PHP 5)
is_string — 変数の型が文字列かどうかを調べる
パラメータ
-
var -
評価する変数。
返り値
var の型が string である場合に
TRUE、それ以外の場合に FALSE を返します。
例
例1 is_string() の例
<?php
$values = array(false, true, null, '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() - 変数が配列かどうかを検査する
slicky at newshelix dot com ¶
12 years ago
jeroen at asystance dot nl ¶
8 months ago
Note that this (and probably other is_* functions) behave differently with respect to lazy evaluation:
php > $v = '';
php > echo $v[0];
PHP Notice: Uninitialized string offset: 0 in php shell code on line 1
# As expected!
php > empty($v) && $v[0];
# As expected, this does not throw a notice, since $v[0] is never evaluated.
# However:
php > is_string($v) && $v[0];
PHP Notice: Uninitialized string offset: 0 in php shell code on line 1
