一、变量的类型

变量包含8种数据类型,分别是:

4种标量类型:1、布尔型 bool

<?php$bool=true;?>

2、整形int

<?php$username=1234;?>
3、字符串string
<?php$username='admin';?>

4、浮点型float;

<?php$float=16.22;?>

2种复合类型:

1、数组:数组又分为索引数组跟关联数组

所谓索引数组即下标为整形的数组,如

<?php$arr=[1,2,3,4,'admin'];echo'<pre>';var_dump($arr)?>

1628053017(1).png

所谓关联数组即下标为字符串的数组,如

<?php$arr=['uname'=>admin,'email'=>'123@163.com',age=>18,'gender'=>1];echo'<pre>';var_dump($arr);?>

1628053075(1).png

2、对象:对象就是类实例化的结果,具体可以参考https://www.php.cn/php-ask-431790.html,简单一点的例子:

<?phpclassNBAplayer{}$jordan=newNBAplayer;?>

2种特殊类型:

1、null:null表示一个变量没有值,表示一个变量空的很纯粹,相如空字符、空格、0等带其中一个都不属于null,null是连这些都没有的,且null不区分大小写。

<?php//null的两种表现方式//1、直接赋值null$int=null;//2、将原赋值内容释放//给$uname赋值一个字符串$uname='admin';//把$uname的赋值释放unset($uname);//加上@符号忽略notice报错,输出$uname@var_dump($uname)?>

2、resource:资源类型 保存到外部资源的一个引用,如本地有个log.txt文件,想要以读写引用:

<?php$handle=fopen('log.txt','w+');var_dump($handle);?>

二、变量类型的转换

1、临时转换:

页面中很多地方需要用到强制类型转换,常用于urlquerystringparameter,获取get请求的页面分页参数,分页数据必须是整形才能计算偏移量offset。

1628056137(1).jpg

如:http://localhost/php/study/0803/demo3.php?page=3这个地址page后是分页的参数,如果用get请求获取$_GET['page'],用var_dump()打印会发现,输出的类型是字符串,这个时候就需要对变量做一个类型的转换

<?php//声明变量,并将GET请求请求到的数据强制转换为整数型$page=(int)$_GET['page'];//输出查看$page详情var_dump($page);?>

再举个例子,我们知道一个变量是可以多次重复输出的,那就可以用临时改变变量类型的方法输出不同类型的同一个变量

<?php//声明变量等于整形666$uid=666;//输出时第一个是将变量原样输出,第二个是转换为字符串的形式输出,第三个是转换为浮点型输出,第四个是转换为数组输出,最后一个是转换为数组并获取其中第一个元素输出var_dump($uid,(string)$uid,(float)$uid,(array)$uid,((array)$uid)[0]);?>

2、系统自动转换:

php是弱类型语言,遇到如加减运算等情况时,可以自动转换字符串类型如,如遇到一些内容需要去做加减乘除计算,应该让用户都是只输入数值,但前端没有限制用户输入,用户输入了一些奇奇怪怪的内容,也是可以进行计算的:

<php//模拟前端传过来的非正规参数,$pages='100pages';//对$pages与整形进行加法运算,并加上@符号忽略报错@$pages+=200;//输出$pages详情var_dump($pages);//用下划线分割开echo'<hr>';//对$pages与浮点型进行加法运算$pages+=11.6;//输出$pages详情var_dump($pages);?>

可以看到输出结果,第一个系统自动转换成了整形,第二个系统自动转换成了浮点型

1628057455(1).jpg

系统自动转换中的加减中null特殊类型会被识别为0。

3、永久转换:

永久转换可以用settype()函数来实现,括号内两个参数第一个是变量,第二个是需要转换成的类型的字符串形式的值;

<php//声明一个变量$pages$pages='100pages';//将$pages的类型永久转换为整形settype($pages,"integer");//输出变量$pages的类型echogettype($pages);?>

三、PHP常量

1.PHP常量一般情况命名推荐全部大写,多个字符之间可以用_隔开;

2.常量是一个固定值,不可被重新定义,且不能被取消;

3.常量的命名前面不能加$符号;

4.常量的定义方式:

define(),括号内两个参数第一个是常量名称,第二个是常量的值;

<?php//定义常量NATION的值为Chinadefine('NATION','China');//输出常量NATIONechoNATION;?>

const 常量名称 = 常量值;

<?php//使用const声明一个常量constUSER_NOT_EXSIT='用户不存在';//使用json_encode对['msg'=>USER_NOT_EXSIT]数组进行JSON编码,320对内容进行格式化echojson_encode(['msg'=>USER_NOT_EXSIT],320);?>

5.需要注意在类常量中只能用const关键字声明不能用define,如:

<?phpclassUser{constAPP_PATH='0802/part1';};?>

四、PHP变量与常量的异同

相同:①两者都是区分大小写的(这一点区别于函数,函数是不分大小写的),②两者开头都不能是数字,可以是字母或者_,③很神奇的是竟然可以是汉字,但是一般没人去用,毕竟一个汉字占了3个字符。

不同:①变量的命名前面必须加$符,常量的命名前面不能加$符,②常量是php全局成员(php全局成员:常量、函数、类、接口),全局成员是不受作用域的限制的,全局生效,变量不是全局成员,严格受作用域的限制,只有在函数体外声明的变量是全局变量。

<?php//声明变量$uname='admin';//声明常量define('NATION','China');functioninfo(){//在函数中声明一个变量及一个常量$pwd=md5('123456');define('CITY','Jinan');echo$pwd;}//调用该函数(函数是执行特定功能的代码块,该函数执行的功能就是定义CITY常量并返回$pwd的值,函数不调用,功能不执行)info();var_dump($uname.'<hr>'.NATION.'<hr>'.$pwd.'<hr>'.CITY);?>

输出结果:

WLS)3P%FU[%`7(C5GO96~CB.png

从输出结果可以看到,在函数内定义的$pwd受到了作用域的限制只在函数内被输出了,在函数外没被输出且报错,其他内容均正常输出。

更多相关文章

  1. php变量与常量
  2. 作业标题:0803 php变量与常量作业
  3. zy0803
  4. 数据类型及类型转换
  5. PHP基础课第二次作业
  6. 1. php变量的8种数据类型? 2. php变量类型的转换? 3. 如何定义php
  7. 08-03作业
  8. php第一天---变量
  9. 作业标题:0802-php是什么及运行原理 编程作业

随机推荐

  1. 检索每n行的最高值
  2. 如何在C中删除多个闪存地址?
  3. MySQL数据库引擎ISAM MyISAM HEAP InnoDB
  4. mysql 数据库中表不同 但是列名相同,怎么
  5. SQL从结果数据库中选择subCode及其得分,并
  6. 什么时候最推荐使用mysql_real_escape_st
  7. Atitit 数据库 标准库 &#160;sdk 函数库
  8. mysql如何导出HTML?
  9. wampserver无法启动之mysql疑难杂症
  10. Linux下mysql数据库root无法登录的情况