PHP数据类型
一、数据类型分类
PHP 支持8种基本的数据类型。
四种标量类型:
两种复合类型:
最后是两种特殊类型:
为了确保代码的易读性,本手册还介绍了一些伪类型:
以及伪变量 $….
可能还会读到一些关于“双精度(double)”类型的参考。实际上 double 和 float 是相同的,由于一些历史的原因,这两个名称同时存在。变量的类型通常不是由程序员设定的,确切地说,是由 PHP 根据该变量使用的上下文在运行时决定的
注:
1、如果想查看某个表达式的值和类型,用 var_dump()。
2、如果只是想得到一个易读懂的类型的表达方式用于调试,用 gettype()。要查看某个类型,不要用 gettype(),而用 is_type 函数。以下是一些范例:
1<?php
2$a_bool = TRUE; // a boolean
3$a_str = "foo"; // a string
4$a_str2 = 'foo'; // a string
5$an_int = 12; // an integer
6echo gettype($a_bool); // prints out: boolean
7echo gettype($a_str); // prints out: string
8// If this is an integer, increment it by four
9if (is_int($an_int)) {
10 $an_int += 4;
11}
12// If $bool is a string, print it out
13// (does not print out anything)
14if (is_string($a_bool)) {
15 echo "String: $a_bool";
16}
17?>
如果要将一个变量强制转换为某类型,可以对其使用强制转换或者 settype() 函数。注意变量根据其当时的类型在特定场合下会表现出不同的值。更多信息见类型戏法。此外,你还可以参考 PHP 类型比较表看不同类型相互比较的例子。
二、数据类型示例
1Int zjj=100; //这种赋值是对的
2Int zjj="hello,world"; //这种编译器就会提示错误
3在PHP中,对变量的数据类型不需要声明,可以直接赋值。如下面的
4$zjj=100; //表示zjj为整型
5$zjj="hello,world" // 表示zjj为字符串型
6PHP中的数据类型分成两种:一是标量数据类型,另一种就是复合数据类型。
7标量数据类型有:
8布尔型(boolean) 整型(integer) 浮点型(foat也叫做double)
9复合数据有:
10数组(array) 对象(object)
11还有两种特殊的数据
12资源(resource) 空值(NULL)
1、布尔型是最简单的变量,布尔变量:true和false值
要设定一个布尔变量,只需将这两个值赋给变量就行了。PHP中就算是关键字也可以做变量名。
1<?php
2 $True="我是变量" . True; //这里有点的,书上有时印刷并没有。
3 echo($True);
4 echo("<BR>"); //起到回车的作用
5 echo("我是关键字" . True)
6?>
7执行结果:我是变量1 //这里true就是1
8我是关键字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
1<?php
2 $int_D=2147483647; //十进制赋值
3 echo($int_D);
4 echo("<br>");
5 $int_H=0x7FFFFFFF; //十六进制赋值
6 echo($int_H);
7 echo("<br>");
8 $int_O=017777777777; //八进制赋值
9 echo($int_O);
10 echo("<BR>");
11?>
12执行结果:
132147483647
142147483647
152147483647
如果指定一个数超出了inter的范围,将会被解释为float
3、浮点型
取值范围1.7E-308到1.7E+308
1<?php
2 $float_1=90000000000;
3 echo($float_1);
4 echo("<br>");
5 $float_2=9E10;
6 echo($float_2);
7 echo("<br>");
8 $float_3=9E+10;
9 echo($float_3);
10?>
11执行结果:
1290000000000
1390000000000
1490000000000
4、字符串
PHP中有三种方式定义字符串
a、单引号方式。
$single_str='我是人';
如果想在浏览中输出单引号,必须在字符串中加入转义符号“” .
1<?
2 $single_str='我被单引号括起来了!<br>'; //正常输出
3 echo $single_str;
4 $single_str='输出单引号: '嘿嘿,我在单引号里面'<br>'; //加了转义符可以输出单引号
5 echo $single_str;
6 $single_str='输出双引号:"我在双引号里面"<br>'; //正常输出
7 print $single_str;
8 $single_str='输双美元符号:$'; //正常输出
9 print $single_str;
10?>
11执行结果:
12我被单引号括起来了!
13输出单引号: '嘿嘿,我在单引号里面'
14输出双引号:"我在双引号里面"
15输双美元符号:$
b、双引号方式
1$Double_Str="我是人"
2为了在字符串中输出各种特殊字符,可以使用转义符
3$Double_Str="输出美元符号:$";
4$Double_Str="输出反斜杠:\";
5<?
6 $Double_str="我被双引号括起来了!<br>";
7 echo $single_str;
8 $single_str="输出单引号:'嘿嘿,我在单引号里面'<br>"; //不需要转义符
9 echo $single_str;
10 $single_str="输出双引号:"我在双引号里面"<br>"; //需要转义符
11 print $single_str;
12 $single_str="输出美元符号:$ <br>"; //需要转义符
13 print $single_str;
14 $single_str="输出反斜杠 :\ <br>"; //需要转义符
15 print $single_str;
16?>
17执行结果:
18输出单引号:'嘿嘿,我在单引号里面'
19输出双引号:"我在双引号里面"
20输出美元符号:$
21输出反斜杠 :
c、Heredoc 方式给字符串赋值
1<?
2$zjj1_str =<<<zjj //=<<<这个相当于链接符,获取zjj到zjj中间的数据
3 你好<br>
4 美元符号 $ <br> //zjj1和zjj都是可以随便起名字的。
5 反斜杠 <br>
6 "我爱你"<br>
7 '我恨你'
8zjj;
9 echo $zjj1_str;
10?>
11执行结果:
12你好
13美元符号 $
14反斜杠
15"我爱你"
16'我恨你'
d、字符串中的变量
1<?php
2 $str_1 = "我是变量的值!";
3 $str_2 = "str_1 : $str_1<br>"; //双引号字符串中包含变量$str_1
4 echo $str_2;
5 $str_1 = '我是变量的值';
6 $str_2 = 'str_1 : $str_1<br>'; //单引号中包含字符串的值
7 echo $str_2;
8 $str_1 = "我是变量的值!";
9 $str_2 = "str_1 : $str_12 <br>"; //引用的变量名后,多了个字符2即$str_12
10 echo $str_2;
11 $str_1 = "我是变量的值!";
12 $str_2 = "str_1 : ${str_1}2 <br>"; //引用的变量名后,多了个字符2即$str_12
13 echo $str_2;
14?>
15执行结果:
16str_1 : 我是变量的值!
17str_1 : $str_1
18str_1 :
19str_1 : 我是变量的值!2
从输出可以看出,双引号字符串是赋值的含义,直接输出变量的值。而单引号的字符串,包含的是变量的名称,可以理解为直接运行语句的结果,直接输出变量的名称而不是变量的值。$str_2 \= “str_1 : $str_12
“; 这句如果变量后面跟着非空格的字符,会让编译器糊涂,会把$str_12当成变量,而上面又没有定义。因此会输出空值。为了解决这个问题可以用${str_1}2 或{$str_1}2 这个来表达。
e、php函数下的变量比较表
表达式 | 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 |
5、数组
array() 创建数组,带有键和值。如果在规定数组时省略了键,则生成一个整数键,这个 key 从 0 开始,然后以 1 进行递增。要用 array() 创建一个关联数组,可使用 => 来分隔键和值。如:
1$bo=array(1,2,3,4); $bo=array("A"=>1 , "B"=>2);
数据是php学习中很注重的一部分。以后再单独篇章做总结吧。
6、object对象
类提供了一个基础,可以在此基础上创建实体(即这个类所建模的实体)的特定实例,这些特定实例称为对象(object) 例如,员工管理应用程序可能包括一个EmPloyee 类。然后可以用这个类来创建和维护特定实例,比如Gonn和Sally 。
1<?php
2$obj = (object) array('foo' => 'bar', 'property' => 'value');
3echo $obj->foo; // prints 'bar'
4echo $obj->property; // prints 'value'
5?>
具体详细的介绍部分可以参看官方文档。其他部分在此不再总结,毕竟水平还不够,总结出的不免有问题。以后自学到的时候再总结吧。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/php-data-types/2966.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.