PHP基础-02 常量变量与运算符
1.语言基础
- PHP与ASP、JSP一样,都是嵌入到HTML文件中的服务器端的脚本语言;
- PHP文件的后缀是.php
- PHP代码的标记:
2.输出时间
echo date('Y-m-d H:i:s');
-
默认情况下PHP输出的时间是格林威治时间,比中国时区晚8个小时
-
解决方案:
- 1.0 找到PHP的配置文件 php.ini
- 2.0 定位到 date.timezone
- 3.0 设置中国时区
; PRC为中华人民共和国 date.timezone = PRC
3.变量
3.1特点
- 变量是临时存储数据的容器;
- 变量是存储在内存当中;
- 网页执行完毕后,网页中相关的变量全部消失。
3.2变量命名规则
- 变量名称只能包含:字母、数字、下划线
- PHP中的变量名必须以 “ ” 符 号 开 头 , 但 是 ” ” 符号开头,但是” ”符号开头,但是””符号不属于变量的一部分,将来不管是赋值还是取值,都必须加上”$”
- 变量名区分大小写
- PHP中的变量使用不需要声明,直接赋值使用
- 常用的两种命名方法:
- 驼峰命名法
- 第一个单词的首字母小写,其余单词的首字母全部大写
- 如:userName,userId
- 帕斯卡命名法:
- 与驼峰命名法很像
- 唯一区别是它的首字母是大写
- 如:UserName,UserId
- 下划线命名法
- 所以的单词首字都小写,由下划线连接
- 如:user_name,user_id
3.3变量的声明与赋值
-
声明
- PHP中变量不需要声明,但是每个变量必须以$开
-
赋值:
-
直接给带有$的变量赋值
-
使用“=”,赋值运算符给变量赋值,“=”读作赋值运算符
-
赋值运算符的左边只能是一个变量名
-
如:$userName = “张三”;
$userName = “李四”;
-
3.4变量值的读取
-
变量的数据类型由其中的内容决定
-
直接以 “$+变量名”的方式 取得可以取得变量的值
$userName = "admin";
-
可以使用“.”来连接将变量与字符串一起输出
echo "我的名字叫".$userName
-
也可以在字符串的内部直接使用变量
- 在PHP中“.”点表示相连
- 在PHP中“+”加表示相加(是一种算术运算符)
echo "我的名字叫做$userName" 但是,如果用引号时,变量后面还有其它的有文字,就不能解析了如 echo "我的名字叫做$userName很高兴见到大家" 这里就无法解析,需要在变量后面添加一个非空特殊字符,如: echo "我的名字叫做{$userNmae}很高兴见到大家" 如果输出字符是单引号,则无法解析字符串
3.5变量相关函数
-
header():设置服务器返回到浏览器的数据的类型
header('content-type:text/html;charset=utf-8');
-
isset() 判断变量是否存在
- 可以用来判断变量是否定义,或者是否为null
-
empty() 判断变量是否为空
- 如果
var
是非空或非零的值,则 empty() 返回 FALSE - “”、0、“0”、NULL、FALSE、array()、var $var; 以及没有任何属性的对象都将被认为是空的,也就意味着,如果上述的数据用empty来判断返回的结果都为true
- 如果
-
unset() 删除变量
- 可以通过这个函数删除一个已经存在的变量,删除之后变量为null
- 可以同步删除多个变量
- 如果在函数中 unset() 一个全局变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。(这个当我们学了全局变量与局部变量以后再说)
unset($a,$b,$c)
-
var_dump() 显示变量的类型和值
- 可以同时打印多个变量
-
print_r() 显示数组的元素信息
- 如果是字符串,数字,boolean值,会原样输出
- 如果是数组,会详细打印数组信息
3.6可变变量
-
指一个变量的名称,由另一个变量的值来充当
$a = "b"; $b = "c"; echo $b;//输出 c echo $$a;//输出 c
-
如果使用可变变量,一定要加上给可变变量的变量名加上{}作为定界符
3.7变量的值传递和引用传递
-
JS中的基本数据类型(只有一个值):字符串型、数值型、布尔型、undefined、null
-
JS中的复合数据类型(多个值):数组(Array)、对象(Object)、函数(Function)
-
值传递:
- 传递的是变量中保存的值
-
引用传递
- 传递的是变量保存的引用地址
-
在PHP中可以使用 & 符号将值传递的变量改变为引用传递:如
$a = "abc"; $b = &$a; $a = "123"; echo "$a<br/>$b"
4.常量
4.1概念
- 常量就是值永远不变的量,即:一旦赋值无法删除,修改。
- 由于变量在使用时还需要去它存储的地址中去找到对应的数据,相比变量来说,常量的速度要快。
4.2命名规则
- 与变量基本一致
- 变量名称只能包含:字母、数字、下划线,常量也是
- PHP中的常量不需要使用$符号开头
- 常量名区分大小写,一般建议使用时尽量用大写,为了与变量区分开
- 常用的两种命名方法:
- 驼峰命名法
- 第一个单词的首字母小写,其余单词的首字母全部大写
- 如:uerName,userId
- 下划线命名法
- 所以的单词首字都小写,由下划线连接
- 如:user_name,user_id
4.3常量定义define()
-
语法: bool define ( string value [, bool $case_insensitive = false ] )
-
案例:通过define关键来定义
define('TITLE',"PHP语言");//定义常量TITLE define('TITLE',"PHP语言",true);//加上true,使用时既可以使用TITLE,又可以使用小写title,来使用常量 define('TITLE',"PHP语言",false);//加上false,使用时必须使用TITLE
判断是否是常量:defined()
-
语法: bool defined ( string $name )
-
defined()可以判断常量
defined(“TITLE”);//通过defined判断常量时,常量一定要加上引号1
4.4魔术常量
- 量的值在程序运行过程中不会改变。但是,魔术常量的值,会随着所在位置的不同而改变。
- 魔术常量都由系统定义好的,我们直接使用就好了,常用的有:
- LINE:得到当前代码的行号
- FILE:得到当前文件的路径
- DIR:得到当前文件所在目录
- FUNCTION:得到所在函数
5.数据类型
-
数据类型分类
js中的数据类型: 简单数据类型: Number,string,bool,undefined 复杂数据类型 数组,对象,null
- 基本数据类型:字符串型(string)、整型(int)、浮点型(float:小数)、布尔型(bool)
- 复合数据类型:数组、对象
- 特殊数据类型:资源、NULL
-
数据类型判断
- is_bool(),判断变量是不是布尔型
- is_int(),判断变量是不是整型
- is_string() 判断变量是不是字符串型
- is_float() 判断变量是不是浮点型
- is_numeric() 判断变量不是数值型或数字字符串。
- is_array() 判断变量是不是数组
- is_null() 判断变量是否为NULL
- is_resource() 判断变量是不是资源型
//判断用户是否大于18岁,如果大于18岁,显示网页内容,如果没有,则不显示 $age = 20; if(isset($age) && is_numeric($age)) { if($age >18) { echo('显示网页'); } else { echo ('不显示'); } }
5.3整型
-
关键字:int
-
在js中所有的数字都用number来表示,但是在PHP,数字有不同的划分,其中整数(正整数,0,负整数)用整型来表示
- 整型包含正整数、负整数、零0
- 可以用10进制、八进制、16进制表示
echo 100;//十进制 echo 011;//八进制,以0开头的整数,结果为9 echo 0x9a;//十六进制,以0x开头,结果为154
- PHP中最大整数:PHP_INT_MAX,(2^31)-1
-
如果数字超出来了整数据范围,则类型会变为float
5.4浮点型
-
关键字:float
-
PHP中除了整数还有浮点型,一般浮点数会包含小数,比整型更加精确
-
浮点型的范围:1.8E-308~1.8E+308
-
注意点:
- 如果要对浮点数进行操作,就好先将浮点数转为整数再处理
//以下做法不可取 if(2.1/0.7 == 3) { echo '相等'; } else { echo '不相等'; } //以下是正确做法 $a = 2.1 * 10; $b = 0.7 * 10; if($a/$b == 3) { echo '相等'; } else { echo '不相等';
5.5字符串
-
字符串定义的四种方式
- 用单引号可以定义一个字符串;如:$a = ‘abc’;
- 单引号内无法解析变量
- 转义符号有:\’
- 用双引号来定义一个字符串;如:$a = “abc”;
- 双引号内可以解析变量
- 转义符号有:\、\’、\”、$、\r、\n、\t
- 定义长字符串:heredoc
<?php header('content-type:text/html;charset=utf-8'); $a = 'abc'; $aa = <<<heredoc <html> 123$a </html> heredoc; echo $aa; ?>
- 使用注意:
- 1)字符串放在两个heredoc标签之间
- 2)以“<<
5.6布尔型
- 关键字:bool
- 概念
- true表示真,flase表示假
- 转换:
- 0,”“,NULL,0.0,”0”,arry() 空数组会转为false
- 其它的数据都会转为true
5.7空型
- 用null表示,表示没有
- 以下情况会出现NULL
- 可以直接给一个变量,赋一个NULL值;
- 未定义的变量的值,也是NULL;
- unset()删除一个变量后,该变量的值为NULL。
6.数据类型转换
-
概念
- 数据有不同的类型,有时间操作数据时需要转换类型以后才能完成操作,比如计算
- 类型的转换分为两种:自动转换(隐式转换)、手动转换(强制转换)
- 大部分情况下数据是自动转换,少数情况下强制转换。
-
强制转换
- 通过关键字进行转换
(bool)$a //强制转换为bool //除了0,0.0,”“,”0“,NULL,array(),转为false,其余都为true (int)$a //强制转换为int //转换会将小数去尾 (string)$a //强制转换为string //null也可以转为‘’; (array)$a //强制转换为array (object)$a //强制转换为object
-
进制转换
- 进制就进位制,X进制,就是逢X进一。同理:十进制就是逢十进一,二进制逢二进一等等。
- 8进制:有8个基本数,分别为0、1、2、3、4、5、6、7,运算规则”逢8进1”;
- 16进制:有16个基本数,分别为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,运算规则”逢16进1”。
- 2进制:有2个基本数,分别是0、1,运算规则”逢2进1”。
- 转换方法:
- decbin()将十进制转换为2进制
- bindec()将2进制转换为十进制
- decoct()将十进制转换为8进制
- octdec()将八进制转换为10进制
- dechex()将十进制转换为16进制
- hexdec()将16进制转换为十进制
6.4运算符
-
算数运算符+、-、*、/、%、++、–
-
赋值运算符=、+=、-=、*=、/=、%=
-
字符串运算符. 和 .=
-
比较运算符>、<、>=、<=、==、!=、===、!==
- 案例:字符串比较
- ASCII码表:如果两个字符进行比较,比较的本质是它们对应的ASCII码
echo ("a" > 120);
-
逻辑运算符&&、||、!
- 实例:闰年判断
//条件: //1)能够被4整除,且不能被100整除 //2)能被400整除 $year = 2000; if ($year%4 == 0 && $year % 100 !=0 || $year % 400 ==0) { echo "{$year}是闰年"; } else { echo "{$year}不是闰年"; }
-
运算符优先级
-
三元运算符
- 案例:比较两个数的大小
$a = 123; $b = 456; $max = $a > $b ? $a : $b;
-
错误控制运算符(@)
- 作用:主要用来屏蔽表达式的错误:
- 可以用在变量、常量、函数调用之前,但是不能用在函数定义、类定义之前。
$a = 100; $b = 0; echo @($a / $b);