PHP中資料類型詳解

來源:互聯網
上載者:User

PHP中資料類型詳解

四種標量類型:
boolean (布爾型)
integer (整型)
float (浮點型, 也稱作 double)
string (字串)
兩種複合類型:
array (數組)
object (對象)
最後是兩種特殊類型:
resource (資源)
NULL (NULL)
為了確保代碼的易讀性,本手冊還介紹了一些偽類型:
mixed
number
callback
以及偽變數 $....
可能還會讀到一些關於“雙精確度(double)”類型的參考。實際上 double 和 float 是相同的,由於一些曆史的原因,這兩個名稱同時存在。
變數的類型通常不是由程式員設定的,確切地說,是由 PHP 根據該變數使用的上下文在運行時決定的。
Note: 如果想查看某個運算式的值和類型,用 var_dump()。
如果只是想得到一個易讀懂的類型的表達方式用於調試,用 gettype()。要查看某個類型,不要用 gettype(),而用 is_type 函數。以下是一些範例:
 <?php教程
$a_bool = TRUE;   // a boolean
$a_str  = "foo";  // a string
$a_str2 = 'foo';  // a string
$an_int = 12;     // an integer

echo gettype($a_bool); // prints out:  boolean
echo gettype($a_str);  // prints out:  string

// If this is an integer, increment it by four
if (is_int($an_int)) {
    $an_int += 4;
}

// If $bool is a string, print it out
// (does not print out anything)
if (is_string($a_bool)) {
    echo "String: $a_bool";
}
?>

如果要將一個變數強制轉換為某類型,可以對其使用強制轉換或者 settype() 函數。
注意變數根據其當時的類型在特定場合下會表現出不同的值。更多資訊見類型戲法。此外,你還可以參考 PHP 類型比較表看不同類型相互比較的例子。
 
 
 
#
 
二、PHP的資料類型

Int zjj=100;                  //這種賦值是對的

Int zjj="hello,world";            //這種編譯器就會提示錯誤

在PHP中,對變數的資料類型不需要聲明,可以直接賦值。如下面的

$zjj=100;               //表示zjj為整型

$zjj="hello,world"            // 表示zjj為字串型

PHP中的資料類型分成兩種:一是純量資料型別,另一種就是複合資料型別。

純量資料型別有:

布爾型(boolean)         整型(integer)          浮點型(foat也叫做double)    

複合資料有:

數組(array)        對象(object)

還有兩種特殊的資料

資源(resource)           空值(NULL)

1、布爾型是最簡單的變數,布爾變數:true和false值

要設定一個布爾變數,只需將這兩個值賦給變數就行了。PHP中就算是關鍵字也可以做變數名。

<?php
 $True="我是變數" . True;                   //這裡有點的,書上有時印刷並沒有。
 echo($True);
 echo("<BR>");                        //起到斷行符號的作用
 echo("我是關鍵字" . True)
?>

執行結果:我是變數1                            //這裡true就是1

                  我是關鍵字1

true和false實際上是代表數值1和0,因此true在輸出時顯示為1,但是在給變數賦值的時候,如果賦值為1,則被當成整型,如果被賦值為true,則被當成布爾型

當轉換為布爾型時,以下值被認為是false

 (1)布爾值false

(2)整型值0(零)

(3)浮點型值0.0(零)

(4)空白字串和字串"0"

(5)沒有成員變數的數組

(6)沒有單元的對象(僅適用php4)

(7)特殊類型NULL

而所有其他值都被認為是TRUE包括任何資源。

2、整型

+2147483647到-2147483647

 

<?php
 $int_D=2147483647;  //十進位賦值
 echo($int_D);
 echo("<br>");
 $int_H=0x7FFFFFFF;  //十六進位賦值
 echo($int_H);
 echo("<br>");
 $int_O=017777777777;  //八進位賦值
 echo($int_O);
 echo("<BR>");
?>

執行結果:

2147483647
2147483647
2147483647

如果指定一個數超出了inter的範圍,將會被解釋為float

3、浮點型

1.7E-308到1.7E+308

<?php
 $float_1=90000000000; 
 echo($float_1);
 echo("<br>");
 $float_2=9E10; 
 echo($float_2);
 echo("<br>");
 $float_3=9E+10;
 echo($float_3);
?>

執行結果:

90000000000
90000000000
90000000000

4、字串

PHP中有三種方式定義字串

1、單引號方式。

$single_str='我是人';

如果想在瀏覽中輸出單引號,必須在字串中加入轉義符號“”

<?
 $single_str='我被單引號括起來了!<br>';      //正常輸出
 echo $single_str;
 $single_str='輸出單引號: '嘿嘿,我在單引號裡面'<br>';      //加了轉義符可以輸出單引號
 echo $single_str;
 $single_str='輸出雙引號:"我在雙引號裡面"<br>';         //正常輸出
 print $single_str;
 $single_str='輸雙貨幣符號:$';                 //正常輸出
 print $single_str;
?>

執行結果:

我被單引號括起來了!
輸出單引號: '嘿嘿,我在單引號裡面'
輸出雙引號:"我在雙引號裡面"
輸雙貨幣符號:$

(2)、雙引號方式

$Double_Str="我是人"

為了在字串中輸出各種特殊字元,可以使用轉義符

$Double_Str="輸出貨幣符號:$";

$Double_Str="輸出反斜線:";

<?
 $Double_str="我被雙引號括起來了!<br>";
 echo $single_str;
 $single_str="輸出單引號:'嘿嘿,我在單引號裡面'<br>"; //不需要轉義符
 echo $single_str;
 $single_str="輸出雙引號:"我在雙引號裡面"<br>";  //需要轉義符
 print $single_str;
 $single_str="輸出貨幣符號:$ <br>";  //需要轉義符
 print $single_str;
 $single_str="輸出反斜線 : <br>";  //需要轉義符
 print $single_str;
 
?>

執行結果:

輸出單引號:'嘿嘿,我在單引號裡面'
輸出雙引號:"我在雙引號裡面"
輸出貨幣符號:$
輸出反斜線 :

(3)、Heredoc 方式給字串賦值

<?
$zjj1_str =<<<zjj          //=<<<這個相當於連結符,擷取zjj到zjj中間的資料
 你好<br>
 貨幣符號  $ <br>         //zjj1和zjj都是可以隨便起名字的。
 反斜線   <br>             
 "我愛你"<br>
 '我恨你'
zjj;
 echo $zjj1_str;
?>

執行結果:

你好
貨幣符號 $
反斜線
"我愛你"
'我恨你'

(4)、串中的變數

<?php
 $str_1 = "我是變數的值!"; 
 $str_2 = "str_1 : $str_1<br>";  //雙引號字串中包含變數$str_1
 echo $str_2;

 $str_1 = '我是變數的值';
 $str_2 = 'str_1 : $str_1<br>';  //單引號中包含字串的值
 echo $str_2;

 $str_1 = "我是變數的值!"; 
 $str_2 = "str_1 : $str_12 <br>";  //引用的變數名後,多了個字元2即$str_12
 echo $str_2;

 $str_1 = "我是變數的值!"; 
 $str_2 = "str_1 : ${str_1}2 <br>";  //引用的變數名後,多了個字元2即$str_12
 echo $str_2;
?>

執行結果:

str_1 : 我是變數的值!
str_1 : $str_1
str_1 :
str_1 : 我是變數的值!2

從輸出可以看出,雙引號字串是賦值的含義,直接輸出變數的值。而單引號的字串,包含的是變數的名稱,可以理解為直接運行語句的結果,直接輸出變數的名稱而不是變數的值。

$str_2 = "str_1 : $str_12 <br>";    這句如果變數後面跟著非空格的字元,會讓編譯器糊塗,會把$str_12當成變數,而上面又沒有定義,因此會輸出空值。為瞭解決這個問題可以用${str_1}2 或{$str_1}2 這個來表達。
使用 PHP 函數對變數 $x 進行比較
運算式 gettype() empty() is_null() isset() boolean : if($x)
$x = ""; string TRUE FALSE TRUE FALSE
$x = null; NULL TRUE TRUE FALSE FALSE
var $x; NULL TRUE TRUE FALSE FALSE
$x is undefined NULL TRUE TRUE FALSE FALSE
$x = array(); array TRUE FALSE TRUE FALSE
$x = false; boolean TRUE FALSE TRUE FALSE
$x = true; boolean FALSE FALSE TRUE TRUE
$x = 1; integer FALSE FALSE TRUE TRUE
$x = 42; integer FALSE FALSE TRUE TRUE
$x = 0; integer TRUE FALSE TRUE FALSE
$x = -1; integer FALSE FALSE TRUE TRUE
$x = "1"; string FALSE FALSE TRUE TRUE
$x = "0"; string TRUE FALSE TRUE FALSE
$x = "-1"; string FALSE FALSE TRUE TRUE
$x = "php"; string FALSE FALSE TRUE TRUE
$x = "true"; string FALSE FALSE TRUE TRUE
$x = "false"; string FALSE FALSE TRUE TRUE
 
鬆散比較 ==
TRUE FALSE 1 0 -1 "1" "0" "-1" NULL array() "php" ""
TRUE TRUE FALSE TRUE FALSE TRUE TRUE FALSE TRUE FALSE FALSE TRUE FALSE
FALSE FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE TRUE TRUE FALSE TRUE
1 TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
0 FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE TRUE FALSE TRUE TRUE
-1 TRUE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
"1" TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
"0" FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
"-1" TRUE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
NULL FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE TRUE FALSE TRUE
array() FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE
"php" TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
"" FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE
 
嚴格比較 ===
TRUE FALSE 1 0 -1 "1" "0" "-1" NULL array() "php" ""
TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
1 FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
0 FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
-1 FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
"1" FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
"0" FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
"-1" FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
NULL FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
array() FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE
"php" FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
"" FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.