27岁,山西运城人,职业电商经理人,前端开发工作者,从事过网站建设、网络推广、SEO、SEM、信息流推广、二类电商、网络运维、软件开发,等相关电商工作,经验较为丰富,小米技术社区致力于为广大从事Web前端开发的人员提供一些力所能及的引导和帮助 ...[更多]
E-mail:mzze@163.com
Q Q:32362389
W X:xiaomi168527
27岁,山西运城人,职业电商经理人,网络工程师兼运维,从事过运营商网络建设,企业网络建设、优化。数据中心网络维护等通过,经验丰富,座右铭:当自己休息的时候,别忘了别人还在奔跑。 ...[更多]
大于花一样的年龄,河南郑州是我家,2010年在北京接触团购网,2011年进入天猫淘宝一待就是四年,如今已经将设计走向国际化(ps:误打误撞开始进入阿里巴巴国际站的设计,嘿嘿)五年电商设计,丰富经验,从事过天猫淘宝阿里各项设计,店铺运营,产品拍摄;我将我的经历与您分享是我的快乐!座右铭:越努力越幸运! ...[更多]
E-mail:97157726@qq.com
Q Q:97157726
说PHP数据类型之前,我们先了解
在编程里数据类型有两种:强类型和弱类型
PHP是弱类型,从7.0版本之后支持强类型
强类型语言是一种强制类型定义的语言,一旦某一个变量被定义类型,如果不经过强制转换,则它永远就是该数据类型了,强类型语言包括Java、.net 、Python、C++等语言。
举个例子:定义了一个整数,如果不进行强制的类型转换,则不可以将该整数转化为字符串。
弱类型语言是一种弱类型定义的语言,某一个变量被定义类型,该变量可以根据环境变化自动进行转换,不需要经过显性强制转换。弱类型语言包括vb 、PHP、javascript等语言。
PHP弱类型DEMO
<?php $num1 = '5'; $num2 = 10; echo ($num1 +$num2); ?>
无论是强类型语言还是弱类型语言,判别的根本是是否会隐性的进行语言类型转变。强类型语言在速度上略逊于弱类型语言,但是强类型定义语言带来的严谨性又能避免不必要的错误。
好了言归正传,
String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型) ----- 标量类型
Array(数组), Object(对象) ----- 复核类型
NULL(空值) ----- 特殊类型
在PHP中单引号字符串和双引号字符串是有区别的
单引号字符串是真正的字符串
双引号字符串可以解析字符串中的变量
$name='tom';
echo '我的名字叫$name','<br>'; //我的名字叫$name
echo "我的名字叫$name",'<br>'; //我的名字叫tom
(1)字符串中取变量的值{}
$name='tom'; echo '$name是我的名字','<br>'; //$name是我的名字 echo "{$name}是我的名字",'<br>'; //{}表示获取变量的值(tom是我的名字) echo "${name}是我的名字",'<br>'; //$和{只要挨着一起就可以(tom是我的名字)
(2)字符串输出特殊字符,如果符号要加\
echo '毛主席说:\'上课不要睡觉\'','<br>'; //转义字符 毛主席说:'上课不要睡觉' echo '文件保存在c:\\'; //文件保存在c:\
(3)字符串定界符
1、有<<<开头,后面跟的是标识符 2、字符串定界符的结束符必须顶格写,前面不能有任何的空白字符 3、字符串定界符分为两种,heredoc(双引号),nowdoc(单引号)
2、整型Integer
存整数,PHP_INT_MAX获取整形最大值
PHP支持8、10、16机制的整数
<?php $num1=10; //十进制 $num2=010; //八进制(数字前面加0) $num3=0x10; //十六进制(数字前面加0x) echo $num1,'<br>'; //10 echo $num2,'<br>'; //8 echo $num3; //16
PHP进制转换函数DEMO
echo decbin(123),'<br>'; //十进制转二进制 echo bindec(1111011),'<br>'; //二进制转十进制 echo dechex(123),'<br>'; //十进制转十六进制 echo hexdec('7b'),'<br>'; //十六进制转十进制 echo decoct(123); //十进制转八进制
3、浮点型Float
(1)浮点数在内存中保存的是近似值
(2)浮点数不能参与比较
var_dump(0.9==(1-0.1)); //bool(true) echo '<br>'; var_dump(0.1==(1-0.9)); //bool(false)
(3)如果浮点数要比较,必须确定比较的位数
var_dump(0.9==(1-0.1)); //bool(true) echo '<br>'; var_dump(0.1==(1-0.9)); //bool(false) echo '<br>'; var_dump(bccomp(0.1,1-0.9,5)); //比较小数点后面5位 int(0) 0表示相等
(4)如果一个整数超出了整形的范围,会自动的转成浮点型
4、Boolean布尔型
不能使用echo 和print输出布尔型,要使用var_dump()输出
$flag=false; var_dump($flag); //bool(false)
5、数组Array
注意:
数组在内存中一段连续的空间
使用场景:
如果要保存同一类型的多个数据就使用数组
(1)在PHP中数组有两种形式,索引数组和关联数组
索引数组:用整数做下标,默认从0开始,后面依次加一
关联数组:用字符串做下标,通过=>符号将下标和值关联起来
(2)数组的声明和调用
索引数组的声明
<?php //1、索引数组的声明 $stu=array('tom','berry','ketty'); //索引数组 print_r($stu); //输出数组 Array ( [0] => tom [1] => berry [2] => ketty ) echo '<hr>'; echo $stu[0],'<br>'; //tom echo $stu[1],'<br>'; //berry echo $stu[2],'<hr>'; //ketty
关联数组的声明
//2、关联数组 $emp=array('name'=>'李白','sex'=>'男','age'=>22); print_r($emp); //Array ( [name] => 李白 [sex] => 男 [age] => 22 ) echo '<hr>'; echo $emp['name'],'<br>'; //李白 echo $emp['sex'],'<br>'; //男 echo $emp['age']; //22
(3)写出数组的下标
注意:数组的下标只能是正整数和字符串
$array=array(1=>'a','b','c','d'); print_r($array); //Array ( [1] => a [2] => b [3] => c [4] => d ) echo '<br>'; -------------------------- $array=array('a',2=>'b','c',5=>'d'); print_r($array); //Array ( [0] => a [2] => b [3] => c [5] => d ) echo '<br>'; ---------------------------- $array=array('a','name'=>'b','c','sex'=>'d'); print_r($array); //Array ( [0] => a [name] => b [1] => c [sex] => d ) echo '<br>'; ------------------------------ $array=array(1=>'a',1=>'b',1=>'c','d'); print_r($array); //Array ( [1] => c [2] => d ) 会覆盖
(4)短数组语法,可以直接通过中括号声明数组
$stu=['tom','berry','ketty']; print_r($stu); //Array ( [0] => tom [1] => berry [2] => ketty )
(5)在PHP7.1中可以支持数组的赋值
//例题,两个数交换 $num1=10; $num2=20; [$num1,$num2]=[$num2,$num1]; echo $num1,'<br>',$num2;
(6)二维数组的声明
$stu=[ ['name'=>'tom','sex'=>'男','age'=>22], ['name'=>'berry','sex'=>'女','age'=>23] ]; echo '<pre>'; print_r($stu); //运行结果 Array ( [0] => Array ( [name] => tom [sex] => 男 [age] => 22 ) [1] => Array ( [name] => berry [sex] => 女 [age] => 23 ) )
(7)字符串可以通过数组的方式去调用
echo 'abc'[0],'<br>'; //a echo 'abc'[-1],'<br>'; //c,从右边开始取第一个 7.1开始支持
(8)数组拓展
$stu[true]='tom'; //转成1 $stu[false]='berry'; //转成0 $stu[12.9]='aa'; //转成12(取整数部分) $stu[-10]='bb'; //负数可以做下标 $stu[-12.3]='cc'; //取负整数 $stu['10']='dd'; //字符串数字转成数字 $stu['']='ee'; //空字符串也可以做下标 $stu[null]='ff'; //转成空字符串做下标 print_r($stu);
6、对象
后续补充
1、资源
2、null
提醒:在PHP中 null和NULL是一样的,不区分大小写
本站内容均为小米原创,转载请注明出处:小米技术社区>> PHP的数据类型;强类型和弱类型以及它们的区别