字符串类型:string
php学习之php的八种数据类型之字符串string的使用
1.整数型:int
说明:是负数、0、正数的集合、在php中存储整数为10进制、八进制、十六进制
语法:$var=整数数字;
八进制的写法:在数字前面加上0,就是八进制。数字的范围有0-7。算法:出去开头0,各位+十位*8 +百为*8*8+千位*8*8*8….$num=0456; //4*8*8+5*8+6=302十六进制的写法:在数字前面加上0x,数字为0-f算法:出去开头0,各位+十位*16 +百为*16*16+千位*16*16*16….$num =0x456;//4*16*16+5*16+6=1110 十进制的写法:直接写数字,数字范围0-9
php最大的存储数值为:21亿。用常量PHP_INIT_MAX查询,最大存储值为2147483647,超过这个值自动转为float型
php最大的位数为14位,一个数值占多个位置,PHP_INT_SIZE
2.浮点型:float
说明:就是小数,浮点型也叫浮点数、float、双精度数double或实数real
php中的小说有两种表现形式,
普通的小数科学计数法
浮点数的精度有限,尽管取决于系统,php通常使用ieee754双精度格式,则由于取整而导致的最大相对误差为1.11e-16。非基本数学运算可能会给出更大的误差,并且要考虑到进行复合运算时的误差传递
此外,以十进制能够精确表示的有理数如0.1或0.7,无论有多少为数都不能被内部所使用的二进制精确表示,因此不能在不丢失一点点精度的情况下转换为二进制的格式,这就会造成混乱的结果,如:floor((0.1+0.7)*10)通常会返回7而不是预期中的8,因为结果内部的表示其实是类似于7.9999999999999991118…
所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等,如果确实需要更高的精度,应该使用任意精度数学函数或者gmp函数
普通小数形式
小数末尾多个,小数点后面超过最大长度,会自动删除超出部分,最末尾会四舍五入
科学计数形式
超过14位自动转为科学计数法
3.布尔类型:boolean
说明:在php中布尔型的数据只有两个值,true和false
布尔值一般都用于返回的结果用于流程控制语句中
4.数组:array
说明:一组数据的集合
$变量=array(元素1,元素2,元素3,……);
5.对象:object
说明:世间万物皆为对象
在php中的对象是由类创建来的
//class创建一个类,调用对象$name=null;$age=0;Class people{//属性var $name;var $age;//方法function run(){echo '跑步';}}//创建对象$zs=new people();$zs->name='张三';$zs->age=23;echo $zs->name;$zs->run();$ls= new people();
6.空:null
说明特殊的null值表示一个变量没有值,null类型唯一的值就是它本身null
在php中只能有定义变量并赋值的情况,没有只定义不赋值,这个时候就需要创建一个变量,不知道存储说明值,这个时候可以使用null来创建变量
用法:
7资源:resource
说明:就是引用php外部的内容,这个时候的类型就是资源,资源是通过专门的函数建立和使用的
8.手册中的类型:用于说明需要某种类型的数据
mixed:一个参数可以接收多种不同的类型,如果函数需要的形参是两种以上,都会使用mixednumber:可以是int和floatvoid:作为返回类型意味着函数的返回值是无用的,void作为参数列表意味着函数不接受任何参数
9数据类型的转换
说明:在php 中数据类型是可以进行互相转换的,如整型1转换成字符串’1′
在php中分两种转换形式,:自动转换和强制转换
自动转换
给到特定写法就会改变原来的类型
强制转换
可以使用一些特殊的方式来强制型的改变类型
允许的强制转换的有:
(int),(integer):转换为整型(bool),(boolean):转化为布尔类型(float),(double),(real):转换为浮点型(string):转换为字符串(array):转换为数组(object):转换为对象(unset):转换为null
<?php/*** @Author: admin* @Date: 2018-08-16 22:38:26* @Last Modified by: admin* @Last Modified time: 2018-08-17 04:29:11*/////定义一个十进制的整数的类型$num1 = 10;$num2 = 0;$num3 = -10;echo $num1."<br>".$num2."<br>".$num3;echo "<br>";//定义一个八进制的类型$num1 = 000;//0$num2 = 077774;//32764$num3 = 05555;//2925echo $num1."<br>".$num2."<br>".$num3;echo "<br>";//定义一个十六进制的类型$num1 = 0x00ff;//255$num2 = 0xfff;//4095$num3 = 0x00000;//0echo $num1."<br>".$num2."<br>".$num3;echo "<br>";//查询最大php存储数值echo PHP_INT_MAX;//最大存储值为2147483647,超过这个值自动转为float型//查询一个数字占多大位置$num = 1111111111111111;//超过14位后自动转为科学计数法var_dump($num);echo PHP_INT_SIZE;//4$num = 11111111111;//超过int的取值范围后自动转为float型var_dump($num);$num = 1111111111;//没超过int的取值范围是int型var_dump($num);//小数浮点型$num1=1.1;$num2=0.0;//小数末尾多个,小数点后面超过最大长度,会自动删除超出部分,最末尾会四舍五入$num3=1.00000000000000000000000000;var_dump($num3);$num3=9.99999999999999999999999999;var_dump($num3);$num3=5.55555555555555555555555555;var_dump($num3);$num3=4.44444444444444444444444444;var_dump($num3);//科学计数$num=1111111111111111.1;//超过14位自动转为科学计数法var_dump($num);$num=1111111111111.1;//没超过14位var_dump($num);//不精准体现$num=floor((0.1+0.7)*10);//floor强制转化成浮点型var_dump($num);//结果为7二不是8//bool类型$true=true;var_dump($true);//一般布尔类型会用在控制语句中if ($num==1) {echo '真';} else {echo '假';}echo "<hr>";//class创建一个类,调用对象$name=null;$age=0;Class people{//属性var $name;var $age;//方法function run(){echo '跑步';}}//创建对象$zs=new people();$zs->name='张三';$zs->age=23;echo $zs->name;$zs->run();//null类型$a=null;$b='';//空字符串if (empty($b)) {echo '空';} else {echo $b;}//给函数的形参加默认值function FunctionName($value='',$b=null){}FunctionName();//资源resource 连接数据库$link= @mysql_connect('127.0.0.1','root','root');var_dump($link);//自动转换$a=1;$b=2;$v=$a.$b;//转换为字符串var_dump($v);if ($a) {//自动转换为boolean类型echo '真';}//强制转换$num=1;var_dump((string)$num);//强制转换为字符串$str='123';var_dump((int)$str);//强制转换为整数
php是世界上最好的语言
php的环境搭建好了之后,我们就可以写代码了。
一:如何新建PHP文件。
上一节介绍怎么搭建环境,现在接着在环境目录www(根目录)下面新建一个php文件。新建一个记事本文件,然后后缀修改成php结尾。
新建txt文件,然后修改成php结尾二:变量?
1:变量是用$美元符号表示的,后面接着英文单词,或者汉语拼音都可以,为了方别可读性最好用英文单词表示。
2:变量是什么呢,变量好比是一个空箱子,用来临时存放数据的。$name='zhangsan';意思是把zhangsan赋值给$name,中间的=是赋值的意思,不是等于号。你给变量什么值,他就是什么什么值,随时可以改变。
$name='zhangsan';
$name='lisi';
开始给$name这个变量赋值为zhangsan,那么$name就是zhangsan,后面又$name='lisi',那么$name就不再是zhangsan了,现在是lisi了。现在就明白了,变量的值是会变得,你给他赋值什么,就变成什么值。
3:至于环境变量,魔法变量,静态变量。这些后面再讲,先入门。
4:我们现在就会写变量了,就是$符合后面跟着英文单词或者字母,名字随便取。
5:官方的变量名规则,可以参考,我讲的比较通俗。
PHP 变量规则:
变量以 $ 符号开始,后面跟着变量的名称变量名必须以字母或者下划线字符开始变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )变量名不能包含空格变量名是区分大小写的($y 和 $Y 是两个不同的变量)6:在PHP标签里面写标量,下面是案例。
<?php
$txt="Hello world!";
$x=5;
$y=10.5;
?>
属性重载:
如果使用一个对象的未定义的属性,就构成属性重载。
属性重载,就是对一个“未定义”的属性,进行应对机制(处理办法)。
每一个操作,都会自动各自去调用一个预先定义好的“魔术方法”:
1:__set($name, $value):
当对一个对象的未定义的属性,进行“赋值”时,此时会自动调用类中预先定义好的魔术方法:__set();
该方法带2个参数:
$name : 表示该正在赋值的未定义的属性名;
$value : 表示该正在赋值的值;
实际上,之所以对一个对象的未定义的属性进行赋值,自然是希望该对象来保存该数据。
举例:
2: __get($name)方法
当对一个对象的未定义的属性,进行“取值”时,此时会自动调用类中预先定义好的魔术方法:__get();
该方法带1个参数:
$name : 表示该正在取值的未定义的属性名;
代码示例:
测试结果:
3:__isset()判断:
当对一个对象的未定义的属性,进行“isset()”判断时,此时会自动调用类中预先定义好的魔术方法:__isset();
该方法带1个参数:
$name : 表示该正在isset()的未定义的属性名;
测试代码结果:
4:__unset()销毁:
当对一个对象的未定义的属性,进行“unset()”操作时,此时会自动调用类中预先定义好的魔术方法:__unset();
该方法带1个参数:
$name : 表示该正在unset()的未定义的属性名;
说明:就是php系统内置的提供给使用的变量,这个变量一般都是超全局变量,超全局就是没有作用域的限制有的还可以跨页面
$GLOBALS_SERVER_GET_POST_FILES_COOKIE_SESSION_REQUEST_ENV
1.$GLOBALS
说明:globals是php内置的可以自动获取当前页面中的所有变量的内容,包括局部变量、全局变量、静态变量
2.$_SERVER
说明:server会自动获取服务器和客户端的信息
$_SERVER是一个包含了诸多如头信息(header)、路径(path)、以及脚本位置(scriptlocations)等信息的数组。这个数组中的项目由web服务器创建,不能保证每个服务器都提供全部项目,服务器可能会忽略一些或者提供一些没有在这里列出来的项目,这也就意味着大量的此类变量都会在CGI 1.1规范中说明,
$HTTP_SERVER_VARS包含着相同的信息,但它不是一个超全局变量(注意 $HTTP_SERVER_ARS与$_SERVER是不同变量,php处理他们的方式也不同)
3.$_FILES
说明:获取上传文件的信息
name:图片名称type:图片类型tmp_name:文件的临时文件夹和文件名称error:错误信息size:文件大小
将上传的文件移动到新的位置:move_uploaded_file
bool move_uploaded_file(string $filename , string $destination)
filename:上传的文件的文件名destination:移动文件到这个位置
本函数检查并确保由filename指定的文件是合法的上传文件(即通过php的http post上传机制所上传的)如果文件合法,则将其移动有destination指定的文件
返回值
成功时返回true
如果filename不是合法的上传文件。不会出现任何操作,move_uploaded_file()将返回false
如果filename是合法的上传文件。但出于某些原因无法移动,不会出现任何操作,move_updloaded_file()将返回false,此外还会发出一条警告
4.$_GET:url方式传递数据
说明:其实就是浏览器地址传递方式
传递方式:URL地址?参数值1=值1&参数值2=值2….
传递形式:表单的get方式和超链接方式
5.$_POST:http post方式传递数据
说明:通过http协议的post方式来传递数据
传递方式:表单的post方式或者ajax
6.$_REQUEST:http request变量
说明:默认情况下包含了$_GET和$_POST和$_COOKIED的数组
<?php/*** @Author: admin* @Date: 2018-08-12 18:05:09* @Last Modified by: admin* @Last Modified time: 2018-08-12 22:36:52*///预定义变量$name='张三';$age=23;$sex='男';static $wx='吾爱乐享';//var_dump($GLOBALS);//打印所有的变量,包括自定义的和系统自带的//定义一个函数function user(){global $add;$add='陕西';var_dump($GLOBALS);echo $GLOBALS['name'];//在局部打印全局变量}user();echo $add;//全局打印局部变量echo $GLOBALS['wx'];//打印静态变量的值//接收file传来的信息// $file_name=$_FILES['filename'];// var_dump($file_name);move_uploaded_file($file_name['tmp_name'], 'F:\wamp\www\php2\images/1.jpg');//get接收$get_user=$_REQUEST['getuser'];echo $get_user;?><!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title></head><body><!--创建一个表格,把服务器信息保存到表格中--><table border="1"><tr><th>服务器名称</th><th>服务器对应值</th></tr><?php foreach ($_SERVER as $key => $value): ?><tr><td><?php echo $key ?></td><td><?php echo $value ?></td> </tr> <?php endforeach ?></table><!-- 创建表单,上传文件 --><!-- <form action="" method='post' enctype="multipart/form-data"><input type="file" name='filename'><input type="submit" value="上传"></form> --><!-- post传递方式 --><form action="" method="post"><input type="text" name="getuser"><input type="submit" value="提交"></form></body></html>
说明:常量一旦定义,里面的值和常量是不能改变和销毁的,而且常量名不能重复
1.常量的定义:
语法:define(常量名,常量值);不能定义复合数据
5.xphp版本:const来定义复合的数据,如数组7.0 php版本:define可以定义复合的数据.如:define(ARR,[1,2,3,4,5]);
2访问常量
说明:直接使用常量名就可以了.。如:echo NAME;
常量的使用:网站的配置文件中使用。如:当前网站路径
3.魔术常量—预定义常量
__LINE__:文件中的当前行号__FILE__:文件的完整路径和文件名,如果用在被包含的文件中,则返回被办好的文件名,自php4.0.2起,__FILE__总是包含一个绝对路径.如果是符号连接,则是解析后的绝对路径,而在此前的版本有时会包含一个相对路径__DIR__:文件所在目录。如果用在被包括文件中,则返回被包括的文件所在目录,它等价于dimame(__FILE__)除非是i根目录。赋值目录中名不包括末尾斜杠__FUNCTION__:函数名称,php4.3.0新增,php5起本常量返回该函数被定义时的名字(区分大小写)在php4中该值总是小写__CLASS__:类的名称__TRAIT__:trait的名称__METHOD__:类的方法名__NAMESPACE__:当前命名空间的名称mvc:URL传递数据:index.php:c=getuser&a=xxxx&m=index
产生随机数的函数:rand()
说明:rand:产生一个随机整数
intrand(void)
int rand(int $min, int $max)
<?php/*** @Author: admin* @Date: 2018-08-12 22:56:43* @Last Modified by: admin* @Last Modified time: 2018-08-12 23:39:54*///常量的定义define('NAME','张三');define('PI',3.14);echo NAME,PI;const USER='admin';echo USER;//__CLASS__:获取当前类名class getuser{function index(){include './xx/index.html';}function add(){include './xxx/index.html';}}//rand()随机函数$num=rand(1,100);//随机生成1-100的整数echo $num;
题:
变量处理常用的函数有哪些? 举例说出至少四个,并各举一个案例说明unset如何在函数内部就销毁一个全局变量,请使用的代码来说明如何销毁PHP基本数据类型的值传递和引用传递的区别是什么,请画出对应的内存示意图一个页面server.php,并输出至少5个$_SERVER内的元素信息,并说明是什么含义,页面表现形式如下:元素名称 使用形式 结果 含义
PHP_SELF $_SERVER[‘PHP_SELF’] /test/$_SERVER.php 表示本网页路径
参考:PHP手册〉语言参考〉预定义变量〉$_SERVER
5.写一个表单,用来填写“用户信息”,要求出现所有的表单元素类型(除文件类型):
文本框,密码框,单选,复选,下拉,多行文本域,隐藏域
提交后显示用户所填写的所有数据。复选框的问题:都一个name值,复选框name是一个,问:怎么实现获取多个选项的值
答案:
1.变量常用的函数:
isset():案例:$user=isset($_GET[‘user’])?$_GET[‘user’]:”;//判断是否存在
unset():案例:$a=1; unset($a);//销毁变量a
empty():案例:$a=1;if(empty($a)){echo “存在”};//判断是否为空
echo:案例:$a=1;echo $a;//打印a
var_dump():案例:$a=1; var_dump($a);//打印a
2.用unset销毁在函数中的全局变量
//只销毁局部变量$a=1;function demo(){global $a;//把全局变量局部声明echo $a;unset($a);//销毁变量aecho $a;}demo();//变量a被销毁echo $a;//a的值存在正常打印//销毁全局变量function un(){global $a;//声明局部变量 unset($GLOBALS['a']); //echo $a;}un();echo $a;//a的值没有了
3.值传递和引用传递的区别
值传递,传递过去的是数值,
引用传递,传递的是地址值
4.新建一个server.php
<?php/*** @Author: admin* @Date: 2018-08-13 00:03:26* @Last Modified by: admin* @Last Modified time: 2018-08-13 01:13:03*/$arrayName = array('REQUEST_URI','SCRIPT_NAME','PHP_SELF','SERVER_ADMIN','SCRIPT_FILENAME');$arr2=array('URI 用来指定要访问的页面','包含当前脚本的路径','当前执行脚本的文件名',' Apache 服务器配置','当前执行脚本的绝对路径');echo "<table border=1>";echo '<tr>';echo '<th>元素名称</th><th>使用形式</th><th>结果</th><th>含义</th>';echo '</tr>';foreach ($arrayName as $key => $value) {echo '<tr>';echo '<td>'.$value.'</td>';echo "<td>\$_SERVER['$value']</td>";echo "<td>".$_SERVER[$value]."</td>";echo '<td>'.$arr2[$key].'</td>';echo '</tr>';}echo '</table>';
5.答案
Go 是一种功能强大的编程语言,具有独特的功能组合。而 PHP 是在服务器端执行的脚本语言,与 C 语言类似,是常用的网站编程语言,同时适用于所有微服务、小型、中型乃至大型应用程序。对于开发者而言,两者在使用过程中,有哪些不同的体验?本文即将为大家揭晓。
作者 | Dan Gurgui
译者 | 弯月,责编 | 屠敏
16岁的时候,我发现了PHP。这是我学习的第一门编程语言。当时,我利用PHP来检查用户提交的表单并发送电子邮件,大多数表单都是“联系我们”。多年以来,我始终将PHP作为我的强项,且坚持不懈地发展壮大自己的PHP知识和技能。虽然我觉得自己算不上PHP高手,但这是我最了解的编程语言。以前,我曾有机会在小型项目中使用Ruby、Java、Python和NodeJS。我通过这些经验比较PHP和其他编程语言,了解如何更好地利用PHP的优点并克服它的缺点。
6个月前,我成为了 MessageBird 的一名工程师。申请工作的时候,我填写了PHP,但是我没想到入职后我就开始使用 GoLang,而且与PHP渐行渐远。这种一次很好的经历,在这段时间里,我学习了一种新的编程语言,而如今我又回到了PHP,同时我还拥有6个月的Go编程经验。
Go是一种功能强大的编程语言,具有独特的功能组合。我很遗憾没能更深入地学习Go。我返回PHP的原因与编程语言本身无关,但是,我想总结一下这6个月的经验,并比较一下这两种语言。
静态与动态
GoLang是一种静态编程语言,不像PHP那样是动态的。因此,你需要在初始化变量和对象时提前想清楚。在PHP中,你永远不会初始化变量,需要时当场使用就可以了。因此,在声明一个新变量之前,对于GoLang而言你需要三思而后行,我发现这比在PHP中检查变量的做法更有效率。PHP 7添加了类型声明,这是一个更好的实践,但是在编写代码之前三思而后行是一种更健康的做法。
子程序与并行处理
GoLang 非常神奇的功能之一就是goroutine。这个功能支持异步运行功能。PHP中没有任何功能与Goroutines的简单性和易用性相提并论。每当需要在PHP中进行并行处理时,你都需要添加外部的排队机制(Beanstalk、RabbitMQ等)。这会加剧基础架构的复杂性,并增加项目的复杂性。
GoLang的并行处理远远超越了PHP。
面向对象功能
自从编程问世以来,面向对象的概念一直拥有一席之地。90年代,面向对象在C++中得到了广泛应用,也因此成为了主流范式。面向对象最吸引我的地方在于,它允许工程师使用代码创建业务逻辑图,事实证明,当不断发展的系统发生变化时,这种做法提供的价值无可限量。PHP和GoLang都提供面向对象的功能,但是,这两种语言之间存在很大差异。
我花了很长时间才习惯了隐式接口。在GoLang中,在实现所有方法后,类型就会满足接口要求。但在PHP中,你需要显式地定义类型所需的接口,然后开始实现。有了Go的这一功能,你不需要提前思考应用程序的接口,这一点与我对静态类型语言的认知正好相反。
不断发展的模型具有复杂的需求,而领域驱动的设计可以满足这种需求。为此,你需要许多面向对象的功能,PHP也的确提供了许多这样的功能:trait、抽象方法和类,final方法和类,魔术方法等等。GoLang缺少这些功能,这是一个难以克服的限制条件。因此,我认为GoLang仅适用于微服务或小型应用程序,而PHP适用于所有微服务、小型、中型乃至大型应用程序。
测试
我认为,在决定项目质量方面,测试是最重要的工作:单元测试、集成测试、功能测试、UI测试、性能测试等等,项目拥有的测试越多,交付的质量就越好。GO和PHP的单元测试框架都很出色,Go拥有嵌入式测试包,而PHP有 PHPUnit,它们都提供了一组丰富的功能,可用于测试你的代码。PHPUnit的功能比GoLang测试包更多,因为PHP的功能更多。这两种工具都可以完成编程语言的工作。然而, 在进行高级测试时,PHP和Go就会表现出很大的不同。
首先,对于性能测试,Go的测试包中拥有很多性能测试的功能。pprof 等许多库都可以使用这些功能来创建华丽的数据报告。虽然PHP也有一套可用于性能测试的库和技术,但Go的更加易于使用。我相信这是静态类型语言的优势之一。
其次,对于高级测试技术(例如BDD、TDD和A/B测试),PHP拥有更多支持、更多库,还有一个更大的社区。例如,两种语言都实现了Cucumber(或Gherkin),但是PHP 的 BEHAT 实现支持40多种语言,是完全基于独立组件构建的,而且在GitHub上的支持比Cucumber更多(更多分支、更多给星等等)。
最后,对于功能测试或UI测试,PHP的库更多,且对现有工具的支持更好。Selenium 拥有非常强大的PHP支持(3000多个跨浏览器测试、视频记录、文本和可视日志等),而对于Go来说,只有一个没有良好维护的驱动程序 tebeka / selenium(最后一次提交发生在5个月前)。
其他差异
两种语言之间还有许多其他差异,重点包括:
GoLang 的性能比PHP更好。我们有数百种基准,可以在各种情况下测试 PHP 和 GoLang,但大多数时候明显都是 GoLang 胜出。最重要的是,Go的开发速度很快:测试运行速度更快、内存使用效率更高、CPU使用率更低。PHP社区的人数远远超过了 GoLang,而且支持非常出色。我发现 GoLang 使用了许多糟糕的东西,例如代码生成器,这都是PHP社区几年前抛弃的东西。打包维护也很不相同。在GoLang中,打包维护是内部管理的;而PHP有两层不同的实现方式:第一,PHP扩展级别;第二,每个人都使用的库级别。PHP的情况更为复杂,而go则将两层管理放到了一起。
最后一点想法
这两种语言有明显的区别,在两者之间做选择非常容易。GoLang 的性能更好,拥有原生异步功能以及其他基本功能,非常适合需要频繁使用的小型应用程序和微服务。
然而,随着应用程序的不断增长,业务逻辑复杂度加剧的情况下,PHP是很自然的选择,因为你可以充分利用PHP的面向对象功能和社区支持。
原文:https://medium.com/swlh/6-months-with-golang-after-many-years-with-php-c52124fb7da?
本文为 CSDN 翻译,转载请注明来源出处。
【End】
表达式:表达式是php最重要的基石,在php 中。几乎所写的任何东西都是一个表达式,简单但却最精确的定义一个表达式的方式就是任何有值的东西。如$a=1;
运算符分类
运算符优先级算术运算符赋值运算符位运算符比较运算符错误控制运算符执行运算符递增递减运算符逻辑运算符字符串运算符数组运算符类型运算符
1算术运算符
算术运算符包括:加(+)、减(-)、乘(*)、除(/)、求余(求模)(%)
<?php//加法运算符$a =1;$b =2;echo "a与b的和为:";echo $a + $b ;//减法运算符echo "<br>a与b的差为: ";echo $a - $b;//乘法运算符echo "<br>a与b的积为: ";echo $a * $b ;//除法运算符echo "<br>a与b的商为: ";echo $a / $b;//求余数echo "<br>a与b求余为: ";echo $a % $b ;?>
注意:
1.当运行算术运算符时,字符串类型的会自动转换为0进行和数字运算,比如:$a=1 $b=’b’,那么在运行算术运算符时,$b的值自动转换为0,$a+$b=1+0=1
案例:
2.赋值运算符:
赋值运算符:= 就是把某个值赋给某个变量
语法:$a=1;
赋值一般说的是把等号后面的值赋值给前面的变量,可以多次赋值,$a=$b=1;
3.比较运算符
==:等于,比较的是值,只要值相等结果就是等于===:全等,比较的时类型和值,只有两个都相等才相等!=:不等于:类型转换后两个值不相等,返回为true!==:不全等:两个值不相等或他们的类型不同>:大于,<:小于>=:大于等于<=:小于等于
<?php//比较运算符$a=1;$b=1;$c='1';if($a===$b){echo "全等";}elseif($a==$b){echo "相等";}else{echo "不相等";}echo "<br>";if($a===$c){echo "全等";}elseif($a==$c){echo "相等";}else{echo "不相等";?>
4.错误抑制符:@
说明:屏蔽一些不重要的错误,不影响当前页面的脚本运行
<?php$con =@mysql_connect('localhost','root','');if($con){echo '连接成功';}?>
5.字符串运算符:.或者.=
说明:字符串连接符(拼接),把两个或多个字符串进行连接
<?php$str1='公众号';$str2='吾爱乐享';$str3=$str1.$str2;echo $str3;?>
7逻辑运算符:== —
说明:当前的操作数会自动加1或者减1
如果一个操作数,不给赋值,++$a和$a++是一样的。
前加:++$a;先加1在赋值。后加:$a++;先赋值在加1.
<?php$a=1;$b=1;$b++;++$a;echo $a,$b;//结果为2.自身变量操作++$a和$a++结果是一样的$c=++$a;echo $c,$a;//结果a=3.c=3两个变量操作,++$a和$a++结果不一样$d=$b++;echo $d,$b;//结果b=2,d=3?>
//利用自增,实现循环遍历for($n=0;$n<=10;$n++){echo '<br>a'; echo $n;}echo '</br>-----------------';//利用自增,实现外部变量循环遍历$z='a';for($i=0;$i<=10;$i++){$z++;echo $z;}
未经允许不得转载
1.比较运算符
2.案例求两个数最大值
3.逻辑运算符
4. 案例求平年闰年
$year%4==0 && $year%100!=0 || $year%400==0
5. 赋值运算符
6.案例:交换两个变量值
7.字符串运算符
8.案例:平年闰年
1.区分大小写的情况
· 是指变量名区分大小写,其他基本都不区分
· 比如函数名不区分
· 比如系统中使用的关键字也不区分大小写,比如if, else, for
· 常量:可以自己设定是否区分,默认是区分的,也是推荐的做法。
2.语句结束符
· 一条语句使用一个分号结束
· 一段php代码区域中最后一个分号可省略
· php结束标记省略则不能省略最后一个分号
3.php注释
· 单行注释
o //常规风格(推荐)
o #配置文件风格
· 多行注释
o /* ....多行注释内容... */
多行注释技巧1:
/*
.... .....
//*/
多行注释技巧2:
if语句
4.变量
基本理解
变量是一个“标识符”,是一个“名字”,它用于存储并表示可以变化的数据;
对数据的使用和操作,只要通过变量就可以了!
每个变量中,就存储“一个数据”!
变量跟其所存储的数据之间的关系,称为“引用关系(指代关系)”,比如:
$i = 1; //则该语句的含义如下图所示
5.isset()判断:
用于判断一个变量“是否存在”——严格来说,是判断该变量中“是否有有效数据”;
返回的结果是布尔值:true(表示有),false(表示没有)
代码演示如下:
6.unset()销毁:
可以理解为:将变量和数据之间的原来的“引用关系”(指代关系)断开!!!
如下图所示:
7.变量的传值方式:
说明:
1,这里研究的是:将一个变量的值,传给另一个变量的内部机制(一对一情形)
2,只有2种:值传递,引用传递;
3,php中,默认都是值传递,引用传递必须使用引用符号:&
8.值传递:
将变量1的数据值,“复制”一份,然后将该复制出来的新的数据值,赋值给变量2:
形式为:
$v2 = $v1;
比如:
$v1 = 1;
$v2 = $v1;
理解:
9.引用传递:
将变量1的对数据的关系,“复制”一份,让变量2去使用该关系,其实相当于变量2也有一个指向之前变量1的数据的关系。
形式为:
$v2 = & $v1;
比如:
$v1 = 1;
$v2 = & $v1;
理解:
10.可变变量
是一个变量名本身又是一个变量的“情况”。
$name = “a”;
$a = 10;
echo $$name; //这就是可变变量,其实,它是指输出一个变量:$$name,其中变量名为”$name”,也就是“a”,即这里输出的就是变量 $a,也就是10
$b = 20;
$name = “b”;
echo $$name; //此时输出:20,其实是输出变量 $b
再举例:
$a = 10;
$b = “a”;
$c = “b”;
$d = $$$c + 4;; //14, 这里,$$$c就是“可变变量”
1.运算符
算术运算符
基本:
1, 包括有:+ - * / %
2,他们都只针对“数字”进行运算:如果不是数字,会“自动转换”为数字
3,其中取余(取模)运算符(%),只能针对整数进行,如果不是整数,直接“截取”为整数
比如:
$v1 = 11.5 % 3 ; //结果是:2, 其实是11%3
$v2 = 11.5 % 2.5; //结果是:1, 其实是11%2
$v2 = 10.5 % 3.5; //结果是:1, 其实是10%3
2.自增(++)自减(--)运算符
以下只对++进行说明,(--)运算同理。
对一个“变量”的值进行自加1的运算,比如:
$v1 = 11;
$v1++; //v1的值为12了,这叫“后自加”
++$v1; //v1的值为13了,这叫“前自加”
3.前自增和后自增的区别(自减同理):