php 数据类型

来源:互联网 发布:perl json 格式化输出 编辑:程序博客网 时间:2024/05/16 23:01
{php 数据类型}

PHP 支持8种基本的数据类型。

四种标量类型:

  • 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 integerecho gettype($a_bool); // prints out: booleanecho gettype($a_str); // prints out: string// If this is an integer, increment it by fourif (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 我是关键字1true和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>");?> 执行结果:214748364721474836472147483647如果指定一个数超出了inter的范围,将会被解释为float3、浮点型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);?> 执行结果:9000000000090000000000900000000004、字符串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_1str_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 = "";stringTRUEFALSETRUEFALSE$x = null;NULLTRUETRUEFALSEFALSEvar $x;NULLTRUETRUEFALSEFALSE$x is undefinedNULLTRUETRUEFALSEFALSE$x = array();arrayTRUEFALSETRUEFALSE$x = false;booleanTRUEFALSETRUEFALSE$x = true;booleanFALSEFALSETRUETRUE$x = 1;integerFALSEFALSETRUETRUE$x = 42;integerFALSEFALSETRUETRUE$x = 0;integerTRUEFALSETRUEFALSE$x = -1;integerFALSEFALSETRUETRUE$x = "1";stringFALSEFALSETRUETRUE$x = "0";stringTRUEFALSETRUEFALSE$x = "-1";stringFALSEFALSETRUETRUE$x = "php";stringFALSEFALSETRUETRUE$x = "true";stringFALSEFALSETRUETRUE$x = "false";stringFALSEFALSETRUETRUE

 

松散比较 == TRUEFALSE10-1"1""0""-1"NULLarray()"php"""TRUETRUEFALSETRUEFALSETRUETRUEFALSETRUEFALSEFALSETRUEFALSEFALSEFALSETRUEFALSETRUEFALSEFALSETRUEFALSETRUETRUEFALSETRUE1TRUEFALSETRUEFALSEFALSETRUEFALSEFALSEFALSEFALSEFALSEFALSE0FALSETRUEFALSETRUEFALSEFALSETRUEFALSETRUEFALSETRUETRUE-1TRUEFALSEFALSEFALSETRUEFALSEFALSETRUEFALSEFALSEFALSEFALSE"1"TRUEFALSETRUEFALSEFALSETRUEFALSEFALSEFALSEFALSEFALSEFALSE"0"FALSETRUEFALSETRUEFALSEFALSETRUEFALSEFALSEFALSEFALSEFALSE"-1"TRUEFALSEFALSEFALSETRUEFALSEFALSETRUEFALSEFALSEFALSEFALSENULLFALSETRUEFALSETRUEFALSEFALSEFALSEFALSETRUETRUEFALSETRUEarray()FALSETRUEFALSEFALSEFALSEFALSEFALSEFALSETRUETRUEFALSEFALSE"php"TRUEFALSEFALSETRUEFALSEFALSEFALSEFALSEFALSEFALSETRUEFALSE""FALSETRUEFALSETRUEFALSEFALSEFALSEFALSETRUEFALSEFALSETRUE

 

严格比较 === TRUEFALSE10-1"1""0""-1"NULLarray()"php"""TRUETRUEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSETRUEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSE1FALSEFALSETRUEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSE0FALSEFALSEFALSETRUEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSE-1FALSEFALSEFALSEFALSETRUEFALSEFALSEFALSEFALSEFALSEFALSEFALSE"1"FALSEFALSEFALSEFALSEFALSETRUEFALSEFALSEFALSEFALSEFALSEFALSE"0"FALSEFALSEFALSEFALSEFALSEFALSETRUEFALSEFALSEFALSEFALSEFALSE"-1"FALSEFALSEFALSEFALSEFALSEFALSEFALSETRUEFALSEFALSEFALSEFALSENULLFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSETRUEFALSEFALSEFALSEarray()FALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSETRUEFALSEFALSE"php"FALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSETRUEFALSE""FALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSETRUE