PHP从基础到入门(一) php零基础入门
qiyuwang 2024-10-25 16:37 8 浏览 0 评论
本文章为连载文章PHP入门的第一篇
建议先阅读前篇文章:小白教你PHP基础
运算符
算术运算符
基础:
符号有:+ - * / %
说明:
1,他们都是针对数字进行的运算;
2,如果他们的两边有不是数字的数据,就会(自动)转换为数字;
3,其中取余运算(取模运算)%,它只针对“整数”进行运算,如果不是,会自动截取为整数。
11. 3 % 3 相当于 11 % 3;
11.8 % 3. 8 相当于 11 % 3;
自增自减运算符:
常规:对数字进行自加1或自减1。
字符串: 只能自增,且自增的效果就是“下一个字符”,其只能针对字母或数字进行自加:
布尔值递增递减无效
null递减无效,递增结果为1
字符串自增的例子:
前自增和后自增的区别(自减类似)
通常,我们在循环中,推荐使用前加加,比如:
for($i = 1; $i < 10000; ++$i){ ....... }
演示前加加后加加进行1千万次的“效率比较”:
比较运算符
符号:> >= < <= == != === !==
一般比较:是针对数字进行的大小比较
==和===比较:前者通常叫做模糊相等的比较,后者叫做精确相等的比较(只有数据的类型和数据的值/内容,都相等,才是全等的)。必须能够找到手册的“类型比较表”:附录》php类型比较表:
不要对浮点数直接进行大小比较
常见不同类型(标量类型)数据之间的比较规律:
如果比较的数据中,有布尔值,转为布尔值比较,布尔值比较只有一个规则:true>false
否则,如果有数字值,就转为数字值比较:这就是常规比较。
否则,如果两边都是“纯数字字符串”,转为数字比较
否则,就按字符串比较。字符串比较的规则是:
对两边的字符串,一个一个从前往后取出字符并进行比较,谁“先大”,结果就是它大。
“abc” > true //? false
“abc” > false //true
“0” > false //false
3 > “12”; //false
3 > “12abc”; //false
“3” > “12” //false
“abc” > “c”; //false,后者大
“abc” > “ab123cde”; //true 因为这里”c”大于”1”
“3abc” > “12abc”; //true, 因为”3”大于“1”
1 > “a”; //? true
“1” > “a” //? false
逻辑运算符
逻辑运算符都是针对“布尔值”进行的运算。
如果不是布尔值,就会转换为布尔值进行;
布尔值只有2个:true,false
基本运算规则(真值表):
逻辑与规则:
true && true ==>> true
true && false ==>>false
false && true ==>>false
false && false ==>>false
总结:只有2个都是true,结果才是true
只要有一个是false,结果就是false
逻辑或规则:
true || true ==>> true
true || false ==>>true
false || true ==>>true
false || false ==>>false
总结:只有2个都是false,结果才是false
只要有一个是true,结果就是true
逻辑非规则:
!true ==>> false
!false ==>> true
逻辑运算符的“短路现象”:
逻辑与短路:
结果:如果一个语句中,通过与运算需要进行多项判断,而且不同的判断具有明显不同的“复杂程度”,则我们应该将简单的判断放在前面,这时候我们就可以利用短路现象以达到提高效率的目的。
逻辑或短路:
结果:如果一个语句中,通过或运算需要进行多项判断,而且不同的判断具有明显不同的“复杂程度”,则我们应该将简单的判断放在前面,这时候我们就可以利用短路现象以达到提高效率的目的。
字符串运算符
1,符号只有一个:. 也衍生出另一个: .=
2,含义:就是将这个符号两边的字符串连接起来;
3,如果两边不是字符串,就会自动转换为字符串,然后连接起来。
“ab” . 3 ==>> “ab3”;
“12” . 3 ==>>”123”
12 . 3 ==>> “123”
赋值运算符:
一个基本赋值运算符: =
形式: $变量名 = 值;
理解: 将右边的值(不管做了多少运算),赋值给左边的变量。
若干个衍生的赋值运算符:
+= 加等: 形式: $变量名 += 值;
理解: 相当于: $变量名 = $变量名 + 值;
-= 加等: 形式: $变量名 -= 值;
理解: 相当于: $变量名 = $变量名 - 值;
*= /= %= .= 其都可以认为是上述形式的一种简化版。
条件(三目,三元)运算符
只有一个,形式如下:
数据值1 ? 数据值2 : 数据值3
含义:
对数据值1进行判断,如果为“真”,则该运算符的运算结果就是数据值2,否则就是数据值3;
它是这样一个流程控制(逻辑判断)语句的简写形式:
if( 数据值1 ){
$变量名 = 数据值2;
}
else{
$变量名 = 数据值3;
}
注意:如果数据值1不是布尔值,也会转换为布尔值;
$score = 66; //分数
$valuation = $score >= 60 ? “及格” : “不及格”; //结果为“及格”
$score = 56; //分数
$valuation = $score >= 60 ? “及格” : “不及格”; //结果为“不及格”
$score = 56; //分数
$valuation = $score ? “及格” : “不及格”; //结果为“及格”,这里可能就偏离的本意!!
位运算符
基础规定
1,位是什么?就是2进制数字的每一个“位”,一个整数数字,有(由)32个位构成!
2,位运算符是仅仅针对整数进行的运算符;
3,位运算符有如下几个
&: 按位与;
|: 按位或;
~: 按位非;按位取反;
^: 按位异或;
4,位运算符的基本语法规则:
按位与基本规则:
1 & 1 ==>> 1
1 & 0 ==>> 0
0 & 1 ==>> 0
0 & 0 ==>> 0
按位或基本规则:
1 | 1 ==>> 1
1 | 0 ==>> 1
0 | 1 ==>> 1
0 | 0 ==>> 0
按位非基本规则:
~1 ==>> 0
~0 ==>> 1
按位异或基本规则:
1 ^ 1 ==>> 0
1 ^ 0 ==>> 1
0 ^ 1 ==>> 1
0 ^ 0 ==>> 0
可见,按位异或的规则是:相同为0,不同为1
整数的按位与运算(&)
形式:
$n1 & $n2; //n1,n2是2个任意整数;
含义:
将该2个整数的二进制数字形式(注意,都是32位)的每一个对应位上的数字进行基本按位与运算之后的结果!
注意:他们运算的结果,其实仍然是一个普通的数字(10进制)。
示例图示(只用8个位来演示):
$r1 = 10 & 20;
10的2进制 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
20的2进制 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 |
&运算结果: | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
代码验证:
整数的按位或运算:
形式:
$n1 | $n2; //n1,n2是2个任意整数;
含义:
将该2个整数的二进制数字形式(注意,都是32位)的每一个对应位上的数字进行基本按位或运算之后的结果!
注意:他们运算的结果,其实仍然是一个普通的数字(10进制)。
示例图示(只用8个位来演示):
$r1 = 10 | 20;
10的2进制 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
20的2进制 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 |
|运算结果: | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 |
则结果该数据值大小为: 1*24 + 1 * 23 + 1*22 + 1* 21 + 0 = 16 + 8 + 4 + 2 = 30
代码验证:
整数的按位左移运算
形式:
$n1 << $m
含义:
将十进制数字n1的二进制数字形式(也是32位的)的每一个位上的数字都一次性往左边移动m位,
并将右边空出来的位置补0,左边冒出去的不管,这样操作之后得到的结果。
示例图示(只用8个位来演示):
$r1 = 10 << 2;
10的2进制 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
左移2位后 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 |
则结果为: | 25 | 0 | 23 | 0 | 0 | 0 |
可见,结果为:25 + 23 = 32 + 8 = 40
代码验证:
补充知识:原码,反码,补码
原码:
就是一个二进制数字,从“数学观念”上来表达出的形式。其中,我们规定:
一个数字的最左边一位是“符号位”,0表示正数,1表示负数;
比如:
反码:
正数的反码就是其本身(即不变);
负数的反码是:符号位不变,其他位取反;
比如:
补码:
正数的补码就是其本身(即不变);
负数的补码是:符号位不变,其他位取反后+1——即反码+1
一个小提示:计算机内部的运算,实际全都是使用补码进行的,而且运算的时候,符号位不再区分,直接也当做“数据”参与运算:
示例1:
5+3:
示例2: 5-3:
实际上,cpu内部,会将“减法”运算,转换为“加法运算”,即:5 + (-3)
位运算符的应用:管理一组事物的开关状态
什么是开关状态?
现实中,有很多数据都是只有2种结果(值)的,对应的其实就是我们的布尔类型的值。
这里,所谓管理一组事物的开关状态,应该理解为其实就是管理若干个只有2个状态的“数据符号”。
比如:有5个灯泡,对应5个状态数据。
这5个灯泡,就有 25 种状态呢?
这里的管理目标是:使用一个变量,就可以表达若干个数据的“当前状态”。具体有3个任务:
1,通过该变量,可以获知任何一个数据(灯泡)的当前状态。
2,通过该变量,可以将一个一个数据的状态“关闭”;
3,通过该变量,可以将一个一个数据的状态“开启”;
看代码!!!
数组运算符
有这些:
+: 数组联合,也可以理解为“数组串联”。
将右边的数组项合并到左边数组的后面,得到一个新数组。如有重复键,则结果以左边的为准
$arr1 = array(5=>10, 8=>20, 10=>30);
$arr2 = array(3=>33, 2=>22);
$r1 = $arr1 + $arr2; //结果为:array(5=>10, 8=>20, 10=>30, 3=>33, 2=>22)
另一个有重复键的例子:
$arr1 = array(5=>10, 8=>20, 10=>30);
$arr2 = array(8=>33, 2=>22);
$r1 = $arr1 + $arr2; //结果为:array(5=>10, 8=>20, 10=>30, 2=>22)
= =:如果两个数组具有相同的键名和键值(可以顺序不同,或类型不同),则返回true
$arr1 = array(3=>33, 2=>22);
$arr2 = array(2=>”22”, 3=>”33” );
此时,$arr1,和 $arr2是相等的( = = )
!=
= = =: 如果两个数组具有相同的键名和键值且顺序和类型都一样,则返回true
!= =
错误控制运算符@:
通常就用在一个地方:
$link = @mysql_connect(“数据库服务器地址”, “用户名”, “密码”);
作用是:
如果该连接数据的语句失败(比如连接不上),则屏蔽该失败的错误提示!
运算符的优先级
运算符,都有优先级问题!
记住以下几条就可以了:
要意识到运算符有优先级问题
括号最优先,赋值最落后(通常)
先乘除后加减
大致:单目运算符〉算术运算符〉比较运算符〉逻辑运算符(除了“非”运算)
能查到手册: 语言参考》运算符》运算符的优先级。
流程控制
流程图基本符号:
只是人们习惯上使用的一些图形符号,以代表一定的含义,帮组别人理解流程过程。
if分支结构
基本语法形式如下:
if (条件判断1){
分支1;
}
else if (条件判断2){
分支2;
}
else if (条件判断3){
分支3;
}
。。。。。。
else {
//else分支
}
说明:
1,其中,绿色的else if部分可以重复若干次,也可以完全省略!
2,其中,紫色的else部分可以完全省略。
3,该if语句会从前往后(从上往下)依次判断条件,如果某个条件满足了,就会执行其中对应的分支,然后就结束if分支结构语句!
4,如果前面所有条件都不满足,就会执行最后的else分支(前提是有else分支)。
图示如下:
switch分支结构
形式:
switch ( 表达式 ){
case 条件值1:
分支1;
【break;】 //是可以省略部分,不是语法所必须;
case 条件值2:
分支2;
【break;】 //是可以省略部分,不是语法所必须;
........
default :
default 分支;
}
说明:
1,将表达式的结果数据,跟“条件值1”进行“相等判断”,如果相等,就执行分支1,否则继续对后续值进行判断。。。。
2,如果某个分支判断为相等,则执行该分支语句后,并且如果其中没有break语句,则会直接进入下一个分支继续执行,而不会再去判断下一个分支的条件值了,并直到碰到break语句才会跳出。
关系图如下所示:
举例如下:
for循环结构
查看相关素材及更多课程请搜索微信公众号“爱搞机个人版”,喜欢学习的建议关注下,所有课程免费! 点下关注不迷路!
相关推荐
- 基于Docker方式安装与部署Camunda流程引擎
-
1Camunda简介官网:https://docs.camunda.org/manual/7.19/installation/docker/Camunda是一个轻量级、开源且高度灵活的工作流和决策自...
- 宝塔Linux面板如何部署Java项目?(宝塔面板 linux)
-
通过宝塔面板部署Java还是很方便的,至少不需要自己输入tomcat之类的安装命令了。在部署java项目前,我还是先说下目前的系统环境,如果和我的系统环境不一样,导致部署不成功,那你可能需要去找其他资...
- 浪潮服务器如何用IPMI安装Linux系统
-
【注意事项】此处以浪潮服务器为例进行演示所需使用的软件:Chrome浏览器个人PC中需要预先安装java,推荐使用jdk-8u181-windows-x64.exe【操作步骤】1、在服务器的BIOS中...
- Centos7环境Hadoop3集群搭建(hadoop集群环境搭建实验报告)
-
由于项目需要存储历史业务数据,经过评估数据量会达到100亿以上,在原有mongodb集群和ES集群基础上,需要搭建Hbase集群进行调研,所以首先总结一下Hadoop集群的搭建过程。一、三个节点的集群...
- Hadoop高可用集群搭建及API调用(hadoop高可用原理)
-
NameNodeHA背景在Hadoop1中NameNode存在一个单点故障问题,如果NameNode所在的机器发生故障,整个集群就将不可用(Hadoop1中虽然有个SecorndaryNameNo...
- 使用Wordpress搭建一个属于自己的网站
-
现在开源的博客很多,但是考虑到wordpress对网站的seo做的很好,插件也多。并且全世界流量排名前1000万的网站有33.4%是用Wordpress搭建的!所以尝试用Wordpress搭建一个网站...
- Centos 安装 Jenkins(centos 安装ssh)
-
1、Java安装查看系统是否已安装Javayumlistinstalled|grepjava...
- Java教程:gitlab-使用入门(java中的git)
-
1导读本教程主要讲解了GitLab在项目的环境搭建和基本的使用,可以帮助大家在企业中能够自主搭建GitLab服务,并且可以GitLab中的组、权限、项目自主操作...
- Dockerfile部署Java项目(docker部署java应用)
-
1、概述本文主要会简单介绍什么是Docker,什么是Dockerfile,如何安装Docker,Dockerfile如何编写,如何通过Dockerfile安装jar包并外置yaml文件以及如何通过do...
- 如何在Eclipse中搭建Zabbix源码的调试和开发环境
-
Zabbix是一款非常优秀的企业级软件,被设计用于对数万台服务器、虚拟机和网络设备的数百万个监控项进行实时监控。Zabbix是开放源码和免费的,这就意味着当出现bug时,我们可以很方便地通过调试源码来...
- Java路径-02-Java环境配置(java环境搭建及配置教程)
-
1Window环境配置1.1下载...
- 35.Centos中安装python和web.py框架
-
文章目录前言1.Centos7python:2.Centos8python:3.进行下载web.py框架然后应用:4.安装好之后进行验证:5.总结:前言...
- 《我的世界》服务器搭建(我的世界服务器如何搭建)
-
1.CentOS7环境1.1更改YUM源#下载YUM源文件curl-o/etc/yum.repos.d/CentOS-Base.repohttps://mirrors.aliyun.com...
- CentOS 7 升级 GCC 版本(centos7.4升级7.5)
-
1.GCC工具介绍GCC编译器:...
- Linux安装Nginx详细教程(linux安装配置nginx)
-
环境准备1.因为Nginx依赖于gcc的编译环境,所以,需要安装编译环境来使Nginx能够编译起来。命令:yuminstallgcc-c++显示完毕,表示安装完成:2.Nginx的http模块需要...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- 基于Docker方式安装与部署Camunda流程引擎
- 宝塔Linux面板如何部署Java项目?(宝塔面板 linux)
- 浪潮服务器如何用IPMI安装Linux系统
- Centos7环境Hadoop3集群搭建(hadoop集群环境搭建实验报告)
- Hadoop高可用集群搭建及API调用(hadoop高可用原理)
- 使用Wordpress搭建一个属于自己的网站
- Centos 安装 Jenkins(centos 安装ssh)
- Java教程:gitlab-使用入门(java中的git)
- Dockerfile部署Java项目(docker部署java应用)
- 如何在Eclipse中搭建Zabbix源码的调试和开发环境
- 标签列表
-
- navicat无法连接mysql服务器 (65)
- 下横线怎么打 (71)
- flash插件怎么安装 (60)
- lol体验服怎么进 (66)
- ae插件怎么安装 (62)
- yum卸载 (75)
- .key文件 (63)
- cad一打开就致命错误是怎么回事 (61)
- rpm文件怎么安装 (66)
- linux取消挂载 (81)
- ie代理配置错误 (61)
- ajax error (67)
- centos7 重启网络 (67)
- centos6下载 (58)
- mysql 外网访问权限 (69)
- centos查看内核版本 (61)
- ps错误16 (66)
- nodejs读取json文件 (64)
- centos7 1810 (59)
- 加载com加载项时运行错误 (67)
- php打乱数组顺序 (68)
- cad安装失败怎么解决 (58)
- 因文件头错误而不能打开怎么解决 (68)
- js判断字符串为空 (62)
- centos查看端口 (64)