PHP數據類型

PHP共有8種數據類型

類型名稱 類型表示 取值範圍
bool 布爾型 true,false
integer 整型 -2147483647-2147483648
string 字符串型 字符串長度取決於機器內存
float 浮點型 最大值1.8e308
object 對象 經過new實例化 $obj=new person();
array 數組類型 $arr=array(1,2,3,4,5,6);//一維數組
resourse
null 空值 null

布爾型bool

對於其餘類型咱們可使用(bool)或者(boolean) 進行強制轉換 eg:(bool)1=true;php

如下幾種狀況在強制轉化的時候默認爲false:

  • 布爾型的false var_dump((bool) false)
  • 整型 0 var_dump((bool) 0);
  • 浮點型 0.0 var_dump((bool) 0.0);
    • 字符串'0.0'轉換結果爲bool(true)
  • 字符串 ‘0’ var_dump((bool) '0');
  • 空數組$arr=array(); var_dump((bool) $arr)
  • 不包含任何成員變量的空對象只在PHP4使用,PHP5中爲true
  • NULL或者還沒有賦值的變量 var_dump((bool) NULL)
  • 從沒有任何標記(tags)的XML文檔生成的SimpleXML 對象
  • 注: -1和其餘非零值(不論正負)都是true

整型integer

  • 整型的範圍-2147483647--2147483647 ,若是超過該值會自動轉換成float型
  • 咱們可使用echo PHP_INT_SZIE 輸出integer的字長,和機器有關。echo PHP_INT_MAX 輸出integer的最大值
  • PHP中沒有整除運算 若是執行 1/2 會產生 float的0.5 若是想實現整除效果,則可使用 (int)(1/2)=0 或者使用round(25/7)=4
  • 強制轉化成整型 (int)或者(integer) bool型 ture 轉換成 1 ,false轉換成0

浮點型float

  • 取值範圍 最大值 :1.8e308 不知道最小值是多少? 求高手告知
  • 浮點數的字長也和機器有關, 好像沒有PHP_FLOAT_SIZE 啊,求高手告知如何的到浮點數字長

字符串類型string

  • 定義字符串的4種方法
    • 單引號
      • 單引號定義了最原始的字符串,裏面的全部內容都按字符串處理,若是字符串中包含單引號則能夠用\轉義
    • 雙引號
      • 雙引號定義的字符串會解析一些特殊字符(\n,\b)和變量
      • 能夠將變量放置在雙引號中的方式來代替將變量轉換成 字符串(string):
        • $num=10;
        • $str = "$num"; //$str爲字符串型的10
    • heredoc語法結構
      • <<<標示符
      • 字符串自己
      • 標示符
      • 結束時的標示符必須在一行的開始位置,並且標示符的定義格式也必須按照PHP定義的規則,只能包含數字,字母,下劃線,而且不能以數字下劃線開頭
      • 結束標示符哪一行不容許有其餘字符,能夠在標示符後面添加一個分號,切分號先後也不能有tab或空格,不然PHP將沒法解析該標示符,會繼續向下查找標示符,若是在文件結尾前仍沒有找到則會產生一個錯誤
      • heredoc就是一個沒有使用雙引號的雙引號,就是裏面能夠包含雙引號,且不用轉義,並且能夠解析特殊字符和變量
    • nowdoc 語法結構(PHP5.3.0以後)
      • <<<'標示符'
      • 字符串自己
      • 標示符
      • nowdoc的開始標示符必須使用單引號括起來,結束標示符和其餘規則都和heredoc同樣
      • nowdoc就是沒有使用單引號的單引號,nowdoc包含的字符串會原樣輸出,裏面包含的特殊字符和變量不會被解析
  • 若是雙引號中包含數組變量中的幾種狀況
//  咱們先定義如下數組
$arr = [
    'one' => [
        'name'=>'jt',
        'sex'=>'男'
    ],
    'two'=>'zhaohaitao',
    'three'=>'fanchangfa'
];

// 上面是的數組中第一個元素二維的,後兩個是一維的,咱們訪問一維的時候下面幾種方式:
echo "$arr[two]"//key沒有單引號
echo "$arr['two']"//key有單引號 會出錯,若是咱們改爲 echo "{$arr['two']}"; 則能夠正確輸出結果
echo "{$arr[two]}"//有雙大括號,可是key沒有單引號 這種狀況PHP會先尋找有沒有常量banana,有的話則將其替換,因爲沒有two常量則出錯<span style="font-family:'Courier New';"> </span>

// 可見在訪問一維數組的時候 要麼key不加引號,加了就要被{}括起來,能夠全不加。

// 多維數組測試
echo "$arr[one][name]";  //輸出結果爲Array[name] 可見它返回了一個數組,只解析了一維  
echo"{$arr['one']['name']}";//輸出結果爲jt

// 在多維數組的訪問中必須使用了大括號key必須使用雙引號括起來

數組類型

在字符串類型中已經提到,被大括號括起來的,若是不加key引號,是合法的,那麼PHP首先會查找是否有名爲key的常量,有的話就會被替換,沒有的話會產生一個找不到常量的警告才按普通字符串處理,因此建議你們必定加單引號數組

轉換成數組使用(array)type 或者array(type) ,可是若是將只有一個值的轉換成數組,會獲得一個元素的數組,且下標爲0,將NULL轉換成數組會獲得空的數組測試

咱們能夠在遍歷數組的時候改變數組的值,在PHP5.0以上可使用引用實現spa

$arr=array('a','b','c','d','e' );
foreach($arr as &$value)
{
    $value=strtoupper($value);
    echo $value;
}//輸出結果 ABCDE

Object對象類型

實例化對象咱們使用new 加入有一個person類,咱們能夠經過如下方式scala

$objPerson=new person();

強制轉換 (object): 若是將一個對象轉化成對象那麼它沒有任何改變,對於其餘任何值將會實例化一個stdclass的對象,若是該值爲NULL,則會實例化一個空對象,若是 將數組轉換成對象那麼會將數組的key做爲對象的屬性,value爲屬性值,其餘類型的值則名爲scalar的成員變量包含該值code

$arr=array('one'=>'a','two'=>'b' );
$obj=(object)$arr;
echo $obj->one   //輸出結果爲a;

對於其餘值對象

$obj1=(object)'jiang';
echo $obj1->scalar;//輸出結果jiang

NULL 空類型

null大小寫不敏感,NULL類型只有一個取值,表示一個變量沒有值,下面三種狀況變量被認爲爲NULLthree

  • 被賦值爲NULL
  • 還沒有被賦值
  • 被unset();
相關文章
相關標籤/搜索