PHP數據類型


title: PHP數據類型
date: 2018-5-18
categories:php

  • PHP學習筆記
    tags:
  • php

PHP 有8種數據類型:html

  • booblean(布爾型)
  • integer(整型)
  • float(浮點型)
  • array(數組)
  • object(對象)
  • resource(資源)
  • NULL(空值)

檢測數據類型相關的函數

函數 檢測類型 舉例
is_bool 檢測變量是不是布爾類型 is_bool(true),is_bool(false)
is_string 檢測變量是不是字符串類型 is_string('string'),is_string(1234)
is_integer/is_int 檢測變量是否爲整數 is_integer(34),is_integer('34')
is_float/is_double 檢測變量是否爲浮點類型 is_float(3.1415),is_float('3.1415')
is_array 檢測變量是否爲數組類型 is_array($arr)
is_object 檢測變量是不是一個對象類型 is_object($obj)
is_null 檢測變量是否爲null is_null(null)
is_numeric 檢測變量是否爲數字或數字組成的字符串 is_numeric('5'),is_numeric('bccd110'

常量

在 PHP 中,用 definie() 函數來定義,基本格式:
define( $'變量名',常量表示的值,是否對大寫敏感(可選參數,bool值));數組

例如:函數

<?php
    header("Content-type:text/html;charset=utf-8");

    define('MY_NAME', '沫沫');
    define('MY_AGE', '20');
    define('MY_HOBBY', '看小說睡懶覺');

    echo '本府'.MY_NAME.',年芳'.MY_AGE.',尤好'.MY_HOBBY.'。';

    function useConst(){
        echo '<p>函數名字叫:'.`__FUNCTION`__;
    }

    echo '<p>這是第'.__LINE__.'行';
    echo '<p>本文件的絕對路徑爲:'.__FILE__;
    useConst();
?>

魔術常量

名稱 說明
__LINE__ 文件中的當前行號。
__FILE__ 文件的完整路徑和文件名。若是用在被包含文件中,則返回被包含的文件名。自 PHP 4.0.2 起,__FILE__老是包含一個絕對路徑(若是是符號鏈接,則是解析後的絕對路徑),而在此以前的版本有時會包含一個相對路徑。
__DIR__ 文件所在的目錄。若是用在被包括文件中,則返回被包括的文件所在的目錄。它等價於 dirname(__FILE__)。除非是根目錄,不然目錄中名不包括末尾的斜槓。(PHP 5.3.0中新增)
__FUNCTION__ 函數名稱(PHP 4.3.0 新加)。自 PHP 5 起本常量返回該函數被定義時的名字(區分大小寫)。在 PHP 4 中該值老是小寫字母的。
__CLASS__ 類的名稱(PHP 4.3.0 新加)。自 PHP 5 起本常量返回該類被定義時的名字(區分大小寫)。在 PHP 4 中該值老是小寫字母的。類名包括其被聲明的做用區域
__TRAIT__ Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4 起此常量返回 trait 被定義時的名字(區分大小寫)。Trait 名包括其被聲明的做用區域。
__METHOD__ 類的方法名(PHP 5.0.0 新加)。返回該方法被定義時的名字(區分大小寫)。
__NAMESPACE__ 當前命名空間的名稱(區分大小寫)。此常量是在編譯時定義的(PHP 5.3.0 新增)。

布爾型

PHP中布爾值 true 和 false 不區分大小寫。
如下值被認爲是 false:學習

  • 布爾值 false 自己。
  • 整型值 0.
  • 浮點型值 0.0。
  • 空字符串和字符串「0」。
  • 不含任何元素的數組。
  • 不含任何成員變量的對象(僅對php4.0適用)。
  • 特殊類型NULL(包括還沒有定義的變量)。
  • 從沒有任何標記的 XML 文檔生成的 SimpleXML 對象。

字符串型

單、雙引號
雙引號中所包含的變量會自動被替換長實際數值。
單引號中包含的變量則會按普通字符輸出。code

轉義字符htm

HereDoc
注意:結尾的標識符前面不能有空格。對象

數組

varry(value1,
        value2,
        ......)

utf-8

varry(key1 => value1,
        key2 => value2,
            ......)
$my_array[key1] = value1;
$my_array[key2] = value2;
......

NULL

不區分大小寫。資源

知足如下條件之一時,變量的值爲NULL:

  • 變量沒有被賦任何值。
  • 變量被指定爲NULL。
  • 使用 unset() 函數刪除的變量。

強制類型轉換

強轉類型 功能描述
(boolean) 強轉爲Boolean類型
(string) 強轉爲字符串類型
(integer) 強轉爲整型
(float) 強轉爲浮點型
(array) 強轉爲數組
(object) 強轉爲對象

看下面的代碼,能夠說你絕對不可能說出正確的答案。

<?php
    echo (int) 123.999999999999999;
    echo (int) -1.999999999999999;
    echo (int) -1.9999999999999999;
    echo (int) -0.99999999999999999;
    echo (int) -10.999999999999999;
    echo (int) -1000.9999999999999;
    echo (int) -9999999999;
?>

下面來看看我獲得的結果。

首先要說明下個人系統環境:Windows10 64位

獲得的結果以下

124
 -1
 -2
 -1
 -10
 -1000
 -1410065407

官方給出的說法是: 當從浮點數轉換成整數時,將向零取整。

若是浮點數超出了整數範圍(一般爲 +/- 2.15e+9 = 2^31),則結果不肯定,由於沒有足夠的精度使浮點數給出一個確切的整數結果。在此狀況下沒有警告,甚至沒有任何通知!

那麼,咱們來看下面的這個例子。

echo (int) ( (0.1+0.7) * 10 );

不用猜了,這裏的執行結果是---7!

對,你沒看錯,我也沒敲錯,結果是 7 ,而不是咱們一般認爲的 8 。

PHP官方有這麼一句警告: 決不要將未知的分數強制轉換爲 integer,這樣有時會致使不可預料的結果。

因此在進行強制類型轉換的時候必定要慎重!大數值,高精度,分數都要慎用!

固然,上面的那個例子能夠這樣來處理。

<?php
    $num = (0.1 + 0.7) * 10;
    echo (int) $num;    //輸出7

    (int)$num2 = (0.1 + 0.7) * 10;
    echo $num2;     //輸出8
?>

字符串運算符

<?php
    header("Content-type:text/html;charset=utf-8");
    
    $a = '今年是';
    $b = 2018;
    $c = '年。';

    $d = $a.$b.$c;

    echo $d;

    $e = '請叫我';
    $f = '小沫';
    $g = "{$e}{$f}";

    echo $g;
?>
相關文章
相關標籤/搜索