Главная | Руководство по MySQL | MySQL Manual | Документация к HTTP серверу Apache | Apache HTTP Server Documentation | downloads | faq

искать  Язык: Английский


gettype

(PHP 4, PHP 5)

gettypeВозвращает тип переменной

Описание

string gettype ( mixed $var )

Возвращает тип PHP-переменной var .

Внимание

Не используйте gettype() для проверки определенного типа, так как возвращаемая строка может измениться в следующих версиях. Вдобавок, эта функция довольно медленная, поскольку она вызывает сравнение строк.

Используйте функции is_* вместо нее.

Список параметров

var

Переменная, тип которой проверяется.

Возвращаемые значения

Возможными значениями возвращаемой строки являются:

Смотрите также

  • settype() - Присваивает переменной новый тип
  • is_array() - Определяет, является ли переменная массивом
  • is_bool() - Проверяет, является ли переменная булевой
  • is_float() - Проверяет, является ли переменная числом с плавающей точкой
  • is_int() - Проверяет, является ли переменная целого типа
  • is_null() - Проверяет, является ли значение переменной равным NULL
  • is_numeric() - Проверяет, является ли переменная числом или числовой строкой
  • is_object() - Проверяет, является ли переменная объектом
  • is_resource() - Проверяет, является ли переменная ресурсом
  • is_scalar() - Проверяет, является ли переменная скалярным значением
  • is_string() - Проверяет, является ли переменная строкой
  • function_exists() - Возвращает TRUE, если данная функция определена
  • method_exists() - Проверяет, существует ли метод в данном классе


User Contributed Notes
gettype
SoN9ne at gmail dot com
08-Jun-2010 06:32
The code below needs to be updated to work properly. I found that this way seems to work much better.

<?php
   
/**
     * Returns the type of the passed var
     * - PHP warns against using gettype(), this is my workaround
     *
     * @param mixed $var
     * @return string
     */
   
public function fetchType($var) {
        if (
is_bool($var))             $type='boolean';
        else if (
is_int($var))         $type='integer';
        else if (
is_float($var))     $type='float';
        else if (
is_string($var))     $type='string';
        else if (
is_array($var))     $type='array';
        else if (
is_object($var))     $type='object';
        else if (
is_resource($var)) $type='resource';
        else if (
is_null($var))     $type='NULL';
        else
$type='unknown type';       

        return
$type;
    }
?>
son9ne at gmail dot com
04-Jun-2010 05:20
This is my work around for the gettype warning. Hope some find it useful.

<?php
   
/**
     * Returns the type of the passed var
     * - PHP warns against using gettype(), this is my workaround
     *
     * @param mixed $var
     * @return string
     */
   
public function fetchType($var) {
        switch (
$var) {
            case
is_null($var):
               
$type='NULL';
                break;
               
            case
is_bool($var):
               
$type='boolean';
                break;

            case
is_float($var):
               
$type='double';
//                $type='float';
               
break;

            case
is_int($var):
               
$type='integer';
                break;

            case
is_string($var):
               
$type='string';
                break;

            case
is_array($var):
               
$type='array';
                break;

            case
is_object($var):
               
$type='object';
                break;

            case
is_resource($var):
               
$type='resource';
                break;

            default:
               
$type='unknown type';
                break;
        }

        return
$type;
    }
?>
skatebiker at hotmail dot com
22-Feb-2008 01:51
In some rare cases a class instance object returns false when an object but gettype() returns "object".

<?php
$x
= new classvar();

$save = serialize($x);

// ......

$obj = unserialize($save);
// here sometimes is_object() returns FALSE
if (is_object($x) || gettype($x) === "object")
{
  
// ... do something
}
?>
andrey at php dot net
17-Jul-2007 05:08
The function returns "unicode" for Unicode strings in PHP6.
sneskid at hotmail dot com
05-Mar-2007 09:56
I wrote my own gettype function by just using the default is_? functions, but it took twice as long as gettype... So I decided to use gettype with a twist.

Taking the warnings about gettype to heart, and depending on your custom needs, it's worthwhile to dynamically test the gettype result with a known variable, and link the result to a predefined result. Like so:

<?php
/*
 dynamically create an array by using known variable types
 link with a predefined value
*/
$R=array();
$R[gettype(.0)]='number';
$R[gettype(0)]='number';
$R[gettype(true)]='boolean';
$R[gettype('')]='string';
$R[gettype(null)]='null';
$R[gettype(array())]='array';
$R[gettype(new stdClass())]='object';

// what is
function wis_($v){
    global
$R;
    return
$R[gettype($v)];
}

echo
wis_('hello') . '<br/>'; // "string"
echo wis_(24) . '<br/>'; // "number"
echo wis_(0.24) . '<br/>'; // "number"
echo wis_(null) . '<br/>'; // "null"
echo wis_($R) . '<br/>'; // "array"
?>
You won't need to worry about changes in gettype's return strings in future versions.
If the result evaluates to false then you know the variable tested is some "other" type.

I also find these useful
<?php
function is_num($v){return (is_int($v) || is_double($v));}
function
is_box($v){return (is_array($v)||is_object($v));}

echo
is_num(null) . '<br/>'; // false
echo is_num(false) . '<br/>'; // false
echo is_num('123') . '<br/>'; // false
echo is_num(123) . '<br/>'; // true
echo is_num(123.0) . '<br/>'; // true
?>
gilthansNOSPAM at gmail dot com
11-Sep-2005 08:18
NaN and #IND will return double or float on gettype, while some inexistent values, like division by zero, will return as a boolean FALSE. 0 by the 0th potency returns 1, even though it is mathematically indetermined.

<?php
$number
= 5/0;
$number2 = sqrt(-3);
$number3 = pow(0, 0);
$number4 = 0/0;

echo
$number."<br />";
echo
$number2."<br />";
echo
$number3."<br />";
echo
$number4."<br />";
echo
"<br />";
echo
gettype($number)."<br />";
echo
gettype($number2)."<br />";
echo
gettype($number3)."<br />";
echo
gettype($number4);
?>

This will return:

-1.#IND
1

boolean
double
integer
boolean

0
1
1
0
PHP Warning: Division by zero in C\test.php on line 2 PHP Warning: Division by zero in C:\test.php on line 5
matt at appstate
16-Dec-2004 07:10
Here is something that had me stumped with regards to gettype and is_object.
Gettype will report an incomplete object as such, whereas is_object will return FALSE.

if (!is_object($incomplete_obj)) {
   echo 'This variable is not an object, it is a/an ' . gettype($incomplete_obj);
}

Will print:
This variable is not an object, it is a/an object
 

 
credits | contact