二、变量
? 举例子
? 现实生活中我们在家里会用柜子来存放我们的衣服,包,书籍等等其他的东西
? 那么我们在编程语言里面是没有 衣服,包,书籍这些概念的!
? 我们只有数据!那么我们在程序中这些数据是存放在哪里呢?这个就是存放在我们的变量里。
? 变量是用于临时存储值得容器。变量在任何编程语言中都是核心的地位!
? 另外PHP脚本语言是一种弱类型语言,和其他语言不同的是变量或者常量的数据类型由程序的上下文决定。
1.变量的声明
声明:说白了就是实现告知,通知!
在我们的一些编程语言里面比如c语言 使用变量之前要事先通知,事先声明一下!
注意:在php程序里面 使用变量之前是不需要声明的!
-
变量用于存储 数字、文本字符串 或者数组这些数据!
? $变量名
? $变量名=数据(值)
? = 在数学里面是'等于'的意思,在我们的程序语言里面,它不是等于号,而是 ' 赋值操作符 '
2.**变量的销毁
? unset($变量名称)
? $and1=1;
? unset(and变量
? echo $and1;
3.变量的命名规则
? a.变量名是严格区分大小写的
? NAME* $Name* 都是不同的变量
? b. 字母或者下划线开头
? 后面接任意数量的字母数字下划线
?
? 错误的命名方式:
? $1name 错误点:以数字开头了
? $n ame错误点: 中间有空白字符
总结一下:变量名只能包括 字母 数字 下划线 并且必须以字母或者下划线开头!
? 最好不要用一些关键字作为变量名(因为在其他的编程语言是完全不被允许的),eg:and、this...
? c.PHP中有一些标识符是系统定义的,也成为关键字,是PHP语言的组成部分,因此不能使用它们中任何一个作为常量函数名或者类名。但是和其他语言不同的是可以在PHP中作为变量名称使用,不过这样容易混淆,所以最好还是不要用PHP的关键字作为变量名称。
? d.可变变量
? 一个变量的名字可以动态的设置和使用
? $name = 'wangshuailong';
? $$name='name';
? echo $name;
? echo $wangshuailong;
? 了解一下即可
? e.变量引用赋值
? 引用赋值可以简单的理解为给变量起了个别名
//变量的引用 $a=1000; //$b=$a;//相当于把$a的值,复制一份再给了$b这个变量 $b=&$a;//相当于给$a起了一个别名,操作其中任何一个,都会影响另外一个变量的值 echo $a; echo $b;
? 暂时了解一下
变量类型
概述:变量类型是指保存在该变量中的数据类型
? 变量比喻成柜子 衣服,书籍
? PHP对变量类型看的比较淡,所以我们这节课就比较轻松
一、变量类型简介
使用var_dump(变量名)可以输出变量的类型;
? 1.bool(布尔型)
//布尔类型 $a=true; echo $a; var_dump($a); //往变量里面存储true或者false,那么这个类型就是布尔类型了
? 这个是最简单的类型,布尔型表达了true或false,即真或假。
? 以下值被认为是false,其他的值都是被认为是true
? a、布尔值false
? b、0
? c、浮点型0.0
? d、空白字符串和字符串0
? e、没有成员的数组
? f、NULL
- int (整型)
? 往变量里面存整数,那么这个变量就是整型变量啦!
3.float(浮点型,也称double)
? 往变量里面存小数,那么这个变量就是浮点型数据了!
?
$a=1.1; var_dump($a);
? 4.String (字符串)
? 字符串是一系列的字符组成串在一起
? 有三种定义的方式,单引号,双引号,定界符
? 单引号
? 注意,在单引号括起来的字符串中不能再包含单引号,如果实在要用单引号那么就需要用反斜杠()转义
//字符串 $b='cedvsevvt\'rht'; echo $b; var_dump($b); echo $b;
? 双引号
? 双引号括起来
? 其中的变量名会被变量值所替代,即PHP会解析双引号的变量
? 定界符
? <<<之后提供一个标示符,然后是字符串的内容 最后是同样的标示符表示结束
? 注意,结束标示符之后必须接;不可以用其他的任何字符
? 标示符的命名规则 字母数字下划线 并且不能以数字开始
$c=200; $d=<<<ttt venivkgenv ttt; var_dump($d); echo $d;
5.array(数组)
? 数组是PHP中一种重要的符合数据类型
? 前面介绍的类型只能存入一个数据,而数组可以存放多个数据,并且可以存入任何类型的数据
6.object(对象)
resource(资源)
-
Null
? null表示一个变量没有值,表示空
? 将变量直接赋值为null
? 声明的变量尚未被赋值
? 被unset函数销毁的变量
常量
? 常量是一个简单的标示符,如其名称所暗示的,在我们PHP脚本执行期间一个常量一旦被定义,就不能被改变或者取消定义,常量的作用域是全局,
? 常量只能包含bool,int,float,string类型的数据!
1.概念:
? 常量是用于临时(只有在我们的程序的运行过程中才存在)存储值(数据)的容器
? 常量是用于临时(只有在我们的程序的运行过程中才存在)存储值(数据)的容器
2.定义和使用*
? define()
? define(常量名称)
? 常量的命名与变量类似,也遵循PHP标识符的名称规则,按照惯例常量标识符总是大写的
? define('MY_NAME','王帅龙')
? define()函数来检查是否定义了某个常量
3.常量和变量的区别
? a.常量前面没有美元符号($)
? b.常量只能用define()函数定义,不能通过赋值语句
? c.常量可以不用理会变量范围的规则而在任何地方定义和使用
? d.常量一旦被定义就不能被重新定义或者取消定义
? e.常量的值只能是bool,int,float,string类型
4.预定义常量
? 预定义常量说白了就是我们的php内核已经帮我们定义好了的常量;
? 其中预定义常量是以__开头的,这些预定义常量我们又叫它魔术常量
? 代码所在的位置不同他的值也是不同的,所以他叫魔术常量
八个常用的魔术常量
? http://php.net/manual/zh/language.constants.predefined.php
? 预定义的常量是不区分大小写的
? 自定义的常量是严格区分大小写的
运算符
概念
? 说白了就是一些符号,这些符号可以将变量或者
? 运算符对一个或者多个操作数(变量或者数值)执行某种运算
1.算术运算符
//加法
$a=1;
$b=2;
$c=$a+$b;
echo $c;
?
//-有两个意思,一个是减法,一个是取反
$a=1;
$b=-$a;
echo $b;
echo '<br/>'
echo $a;
注意:取反并不会影响到被取反本身的值
//++自增
//前++
$a=10;
++$a;
echo $a;
前++
当在一个语句里面需要使用到被自增的值的时候,前++会先执行自增,然后再返回自增之后的值
//后++
$b=10;
$b++;//echo $b;$b=$b+1;
echo $b;
后++
当在一个语句里面需要使用到自增的变量的值的时候,后++会先返回变量的值然后再去执行自增
$b=10;
++$b;//这种情况不需要用到自增变量值的时候,和后++无区别
echo $b;
//前--
$a=10;
$b=$a--;
echo $b;
//后--
$c=10;
$d=--$c;
echo $d;
注意:自增或者自减是对变量而言的
2.字符串运算符
? PHP中的字符串运算符只有一个英文句号(.),也叫连接运算符
3.赋值运算符
=
? 作用,把右边的值赋给左边的变量 左边必须是变量
? 表达式是PHP最重要的基石。在PHP 中,几乎所有的任何的东西都是一个表达式。简单却最精确的 定义一个表达式的方式就是"任何有用的东西"。
? +=
? $a=1;
? $b=2;
? b;//a+$b;
? echo $a;
4.比较运算符
? 对操作数(按照比较运算符的要求,规则)进行比较
? 如果比较出的结果满足比较运算符的要求那么结果就是true(真,成立,满足),否则就是false(假,不成立,不满足)
? PHP中规定:
? 使用echo输出布尔类型值得时候
? echo true; 他会在页面中输出1
? echo false;他会在页面中什么都不输出
? 规定的记住就好,所以说我们在测试的过程中如果要输出布尔类型值得时候我们最好使用var_dump()来输出更精确得结果!
? a.==值是否相等
? 如果值相等则就是true(真,成立)
? 如果值不相等那么就是flase(假,不成立)
? b.===全等(值要相等,类型也要相等)
? 如果两边操作数的值全等那么就是true否则就是false
$a=1;
$b=2;
//echo $a=$b;
var_dunmp($a==$b);//true
? c.!=值是否不相等
//如果两边操作数的值不相等那么就是true,否则就是false
$a=1;
$b=11;
var_dump($a!=$b);//true
? d.!==不全等
? 如果两边的操作数不全等那么就是true,否则就是false
$a=11;
$b='11';
var_dump($a==$b);//值相等
echo '<br/>';
var_dump($a===$b);//类型也相等
echo '<br/>';
var_dump($a!=$b);
$a=11;
$b='11';
var_dump($a!=$b);//flase
echo '<br/>';
var_dump($a!==$b);//true,$a不全等于$b
? e.< 小于
?
//比较两边操作数,前面的是否小于后面的
$a=1;
$b=1;
var_dump($a<$b);//false,$a于$b这句话正确还是错误
? f.>大于
$a=1;
$b=1;
var_dump($a<$b);
? g. <=小于等于
$a=1;
$b=1;
var_dump($a<=$b);//true
5.逻辑运算符
? 概念:
? 对表达式进行逻辑运算,运算出的结果是布尔类型的值(true,false)
? 要求:
? 参与逻辑运算符的表达式的值是布尔类型的值,如果不是布尔类型的值会被自动转换称布尔类型的值,然后再参与运算。
? 1.逻辑与
? and 或者 &&(一假即假)
? 左右两边的表达式的值都为true的时候,运算的结果就是true,否则只要其中一个为false,运算的结果就是false
$a=true;
$b=true;
$a and $b;
echo $a && $b;
echo '<br/>';
var_dump($a && $b);
? 2.逻辑或(一真即真)
? or 或者 ||
? 左右两边的表达式只要有其中有一个是真的,那么运算的结果就是真的。
$a=true;
$b=false;
echo $a || $b;
echo '<br/>';
var_dump($a||$b);
我们的程序语言设计者认为:
? 只要有逻辑运算符(逻辑与,逻辑或)那么运算结果就是一个true或者false
? 那个这个整个运行过程就不重要了
? 当然短路问题并不会遇到太多,就算遇到也不会有什么影响
//短路问题
$a=true;
$b=1;
$a && ++$b;
echo $b;//短路,上面的++$b被短路了
echo "<br/>";
//短路问题
$a=true;
$b=1;
$a || ++$b;
echo $b;//短路,上面的++$b被短路了
? 3.逻辑异或(同者真,异者假)
? xor
? 运算规则:
? 左右两边的表达式的值不一样的时候结果就是true,如果一样那么运算结果就是false。
//逻辑异或
$a=true;
$b=true;
echo $a xor $b;
var_dump($a xor $b);
4.逻辑非
? 运算规则
? 将原来表达式的值否定掉,原来true,那么结果就是false
? 原来是false,那么结果就是true
6.位运算符
7.其他运算符
? a.? :
? 三元运算符
? 格式:
? 表达式 1 ? 表达式2 :表达式3
? 如果表达式1的值位true,那么就执行表达式2,否则就执行表达式3
$a=false ? 10 : 20;
echo $a;
b.``
可以把系统命令放在里面执行
涉及到跨平台问题所以用的很少
$a=`ipconfig`;
//echo iconv("GB2312","UTF-8",$a);乱码设置
var_dump($a);
c.@
? 屏蔽表达式可能发生的错误:
? echo @$a;
d.
e.
f.instanceof
g.运算符的优先级
? 优先级的概念:
? 1+1-1*8
? 谁的优先级别高就算谁
? 结合方向:
? 规定了从那个方向开始算的问题
? 优先级的概念只要知道一些基本的常见的就好了,因为我们在实际开发中几乎没有那么需要写非常复杂的表达式。我们应该去考虑先算谁,后算谁的问题。
? 优先级归纳:
? 1.[无]递增递减
? 2.[右]逻辑非
? 3.[左]乘,除,取余
? 4.[左]加,减,字符串连接符
? 5.[无]包含大于或者小于号的比较运算符
? 6.[无]不包含大于号或者小于号比较远的运算符
? 7.[左]逻辑与&&
? 8.[左]逻辑或||
? 9.[左]? :
? 10.[右]赋值运算符
? 11.[左]逻辑异或xor
括号的作用:
? 用圆括号可以将表达式里面的某一块看成一块整体
? 使用括号可以增强代码的可读性