PHP判斷資料型別

2020-07-16 10:05:28
在使用資料變數時,先弄清該變數屬於什麼型別是很有必要的。只有知道了資料變數的型別,才能對它進行相關的操作。那麼 PHP 中是如何判斷資料型別的呢?

在 PHP 中有許多專門的函數來判斷資料型別,常用的判斷資料型別的函數如下表所示。

函數名 作用 返回值
is_array(mixed $var) 判斷變數是否為陣列 如果引數 $var 為陣列則返回 TRUE,否則返回 FALSE
is_bool(mixed $var)  判斷變數是否為布林型別 如果引數 $var 為布林型別的值則返回 TRUE,否則返回 FALSE
is_float(mixed $var)  判斷變數是否為浮點數 如果引數 $var 為浮點數則返回 TRUE,否則返回 FALSE
is_int(mixed $var) 判斷變數是否為整數型別 如果引數 $var 為整數型別則返回 TRUE,否則返回 FALSE
is_null(mixed $var) 判斷變數是否為 NULL  如果引數 $var 未被定義,或者被設定為 NULL 則返回 TRUE,否則返回 FALSE
is_numeric(mixed $var) 判斷變數是否為數位或者數位字串 如果引數 $var 為數位或者數位字串則返回 TRUE,否則返回 FALSE
is_object(mixed $var) 判斷變數是否為一個物件 如果引數 $var 為一個物件則返回 TRUE,否則返回 FALSE
is_scalar(mixed $var) 判斷變數是否為一個標量(標量即最小的變數單位,只包括
integer、float、string 或 bool 型別的變數,而 array、
object 和 resource 則不是標量)
如果引數 $var 為標量則返回 TRUE,否則返回 FALSE
is_string(mixed $var)  判斷變數是否為字串 如果引數 $var 為字串則返回 TRUE,否則返回 FALSE
isset(mixed $var)  判斷變數是否已經定義 如果引數 $var 已經存在則返回 TRUE,否則返回 FALSE。
注意:被設定為 NULL 的變數在使用 isset() 時將返回 FALSE

【範例】下面通過範例來演示一下上面這些函數的使用方法。
<?php
    $num1 = 123456;
    $arr = array(1, 2, 3, 4, 5, 6, 7);
    $bool = false;
    $str1 = NULL;
    $str2 = '654321';
    $float = 3.1415926;
    $str3 = 'C語言中文網';
    class foo{
        function dosomething(){
            echo "C語言中文網";
        }
    }
    $obj = new foo();
    if(is_array($arr)) echo '$arr 是陣列';
    echo '<br>';
    if(!is_array($num1)) echo '$num1 不是陣列';
    echo '<br>';
    if(is_numeric($str2)) echo '$str2 是數位';
    echo '<br>';
    if(is_bool($bool)) echo '$bool 是數位';
    echo '<br>';
    if(is_float($float)) echo '$float 是浮點型別';
    echo '<br>';
    if(!is_float($str2)) echo '$str2 不是浮點型別';
    echo '<br>';
    if(is_int($num1)) echo '$num1 是整數型別';
    echo '<br>';
    if(!is_int($float)) echo '$float 不是整數型別';
    echo '<br>';
    if(is_string($str2)) echo '$str2 是字串';
    echo '<br>';
    if(is_object($obj)) echo '$obj 是一個物件';
    echo '<br>';
    if(!isset($str1)) echo '$str1 未定義或則值為 NULL';
?>
執行結果如下:

$arr 是陣列
$num1 不是陣列
$str2 是數位
$bool 是數位
$float 是浮點型別
$str2 不是浮點型別
$num1 是整數型別
$float 不是整數型別
$str2 是字串
$obj 是一個物件
$str1 未定義或則值為 NULL