小米技术社区
小米技术社区管理员 关于小米

27岁,山西运城人,职业电商经理人,前端开发工作者,从事过网站建设、网络推广、SEO、SEM、信息流推广、二类电商、网络运维、软件开发,等相关电商工作,经验较为丰富,小米技术社区致力于为广大从事Web前端开发的人员提供一些力所能及的引导和帮助 ...[更多]

E-mail:mzze@163.com

Q Q:32362389

W X:xiaomi168527

小米技术社区大牛王飞 关于王飞

27岁,山西运城人,职业电商经理人,网络工程师兼运维,从事过运营商网络建设,企业网络建设、优化。数据中心网络维护等通过,经验丰富,座右铭:当自己休息的时候,别忘了别人还在奔跑。 ...[更多]

E-mail:wf_live@126.com

Q Q:3940019

微博:王小贱ss

小米技术社区设计小艳 关于小艳

大于花一样的年龄,河南郑州是我家,2010年在北京接触团购网,2011年进入天猫淘宝一待就是四年,如今已经将设计走向国际化(ps:误打误撞开始进入阿里巴巴国际站的设计,嘿嘿)五年电商设计,丰富经验,从事过天猫淘宝阿里各项设计,店铺运营,产品拍摄;我将我的经历与您分享是我的快乐!座右铭:越努力越幸运! ...[更多]

E-mail:97157726@qq.com

Q Q:97157726

标签云
精品推荐
您的位置:首页 > 后端编程 > PHP > PHP基础

PHP的数据类型;强类型和弱类型以及它们的区别

分类: PHP基础28个赞

说PHP数据类型之前,我们先了解

在编程里数据类型有两种:强类型和弱类型

PHP是弱类型,从7.0版本之后支持强类型


强类型

强类型语言是一种强制类型定义的语言,一旦某一个变量被定义类型,如果不经过强制转换,则它永远就是该数据类型了,强类型语言包括Java、.net 、Python、C++等语言。

举个例子:定义了一个整数,如果不进行强制的类型转换,则不可以将该整数转化为字符串。


弱类型语言


弱类型语言是一种弱类型定义的语言,某一个变量被定义类型,该变量可以根据环境变化自动进行转换,不需要经过显性强制转换。弱类型语言包括vb 、PHP、javascript等语言。

PHP弱类型DEMO

<?php
$num1 = '5';
$num2 = 10;
echo ($num1 +$num2);
?>

强类型语言和弱类型语言区别


无论是强类型语言还是弱类型语言,判别的根本是是否会隐性的进行语言类型转变。强类型语言在速度上略逊于弱类型语言,但是强类型定义语言带来的严谨性又能避免不必要的错误。


好了言归正传,

PHP数据类型包含以下7个:

String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型) -----  标量类型

Array(数组), Object(对象)  -----  复核类型

NULL(空值) -----  特殊类型


一、PHP数据类型--基本类型(标量类型)(4个)


1、字符串String


在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整数型进制转换

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)


二、PHP数据类型--复合类型(2个)


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、对象

后续补充


三、PHP数据类型---特殊类型(1个)

1、资源


2、null


PHP数据类型之特殊类型


提醒:在PHP中 null和NULL是一样的,不区分大小写


小米技术社区

本站内容均为小米原创,转载请注明出处:小米技术社区>> PHP的数据类型;强类型和弱类型以及它们的区别