It took me a second to realize what was happening. When checking is_string() on an empty string, it fails.
ie:
<?php
function fetchType($var) {
# Setup commonly used types (PHP.net warns against using gettype())
switch ($var) {
case is_string($var):
$type='string';
break;
case is_array($var):
$type='array';
break;
case is_null($var):
$type='NULL';
break;
case is_bool($var):
$type='boolean';
break;
case is_int($var):
$type='integer';
break;
case is_float($var):
// $type='float';
$type='double';
break;
case is_object($var):
$type='object';
break;
case is_resource($var):
$type='resource';
break;
default:
$type='unknown type';
break;
}
return $type;
}
echo fetchType('');
?>
will output: array.
is_string
(PHP 4, PHP 5)
is_string — Проверяет, является ли переменная строкой
Список параметров
- var
-
Проверяемая переменная.
Возвращаемые значения
Возвращает TRUE, если var является строкой, FALSE в противном случае.
Примеры
Пример #1 Пример использования is_string()
<?php
if (is_string("23")) {
echo "строка\n";
} else {
echo "не строка\n";
}
var_dump(is_string('abc'));
var_dump(is_string("23"));
var_dump(is_string(23.5));
var_dump(is_string(true));
?>
Результат выполнения данного примера:
строка bool(true) bool(true) bool(false) bool(false)
Смотрите также
- is_float() - Проверяет, является ли переменная числом с плавающей точкой
- is_int() - Проверяет, является ли переменная целого типа
- is_bool() - Проверяет, является ли переменная булевой
- is_object() - Проверяет, является ли переменная объектом
- is_array() - Определяет, является ли переменная массивом
User Contributed Notes
is_string
is_string
son9ne dot junk at gmail dot com
24-Feb-2010 06:38
24-Feb-2010 06:38
yarco dot w at gmail dot com
03-Sep-2007 08:19
03-Sep-2007 08:19
re: php dot net at oui dot jp
<?php
$a = array('0' => 'zero'); // '0'
// is different from
$b = '0'; // '0'
?>
Because when you use array, it will automatically change the key to integer if it could.
So, it output:
>php -r "print var_dump(array_keys(array('0' => '
zero', '1' => 'one')));"
array(2) {
[0]=>
int(0)
[1]=>
int(1)
}
They are int type, not string.
Dainix Zsigmond
01-Aug-2007 03:44
01-Aug-2007 03:44
To php dot net at oui dot jp:
It's going to return a string if the variable's value is encased around quotes or apostrophes, period. Be it a '0' or a '1', it's a string all around. The index in an array is a little bit of a different story.
Sample coding is below:
<?php
$ar = array('this is a string.', '38', '038', 0382, 3892.283);
$ar2 = array('S1' => 'string.', 'S2' => 'a string.', '3' => 3827, '3.82.' => '2222', '-1' => 'foo');
foreach($ar as $num => $string)
{
if (is_string($string)) { echo 'Yes. <br />'; } else { echo 'No. <br />'; }
}
print_r($ar);
foreach($ar2 as $num => $string)
{
if (is_string($num)) { echo 'Yes. <br />'; } else { echo 'No. <br />'; }
}
print_r($ar2);
?>
The first foreach contains a simple if/then statement that checks if the array value is a string or not, which works correctly (Yes, Yes, Yes, No, No). The second checks if the index identifier is a string. It returns Yes, Yes, No, and Yes.
Printing the array: Array ( [S1] => string. [S2] => a string. [3] => 3827 [3.82] => 2222 [-1] => foo)
The index identifier will be marked as a string if the identifier is not an integer above zero.
php dot net at oui dot jp
07-Jun-2007 01:13
07-Jun-2007 01:13
<?php
// Interesting...
$arr = array ('abc','def','ghi');
$aarr = array ('0' => 'abc','1' => 'def','2' => 'ghi');
foreach ($arr as $u => $v)
print is_string($u) ? "Yes\n":"no\n"; // no: ok, index is numeric (0, 1, 2)
foreach ($aarr as $u => $v)
print is_string($u) ? "Yes\n":"no\n"; // still no! was expecting Yes!
if (is_string ('0')) print "'0' is a string\n"; // ...as '0' is a string!
?>
djhook at users dot sourceforge dot net
12-Sep-2003 02:20
12-Sep-2003 02:20
function is_upper($input) {
return ($input == strtoupper($input));
}
function is_lower($input) {
return ($input == strtolower($input));
}
this functions check if a string is all upper/lower case.
input: string
output: true/false
slicky at newshelix dot com
20-Mar-2001 01:06
20-Mar-2001 01:06
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.