目录
第三章 运算符和表达式
3.1常量
常量用于储存不经常改变的数据信息。常量的值被定义后,在程序的整个执行期间,这个值都有效,并且不可再次对该常量进行赋值。
3.1.1 自定义常量
1.使用define () 函数声明常量,语法如下:
define(string constant_name,mixed value,case_sensitive=true)
define函数的参数说明
参数 | 说明 |
constant_name | 必选参数,常量命名,即标识符 |
value | 必选参数,常量的值 |
case_sensitive | 可选参数,指定是否大小写敏感,设定为true,表示不敏感 |
mixed是指混合类型,它不单纯指一种类型,而是PHP对各种类型的一种通用表示形式。
2.使用constant()函数获取常量的值
获取指定常量的值和直接使用常量的名输出的效果是一样的。但函数可以动态地输出不同的常量更加灵活。
语法如下:
mixed constant(string const_name);
const_name是要获取常量的名称。如果成功,则返回常量的值;如果失败,则提示错误信息常量没有被定义。
3.使用defined()函数判断常量是否已经被定义
语法如下:
bool defined(tring constant_name);
参数constant_name为要获取常量的名称,成功则返回true,失败则返回false。
举个栗子:
使用define()函数来定义名为MESSAGE的常量,使用cconstant()函数来获取该常量的值,最后使用defined()函数来判断常量是否已经被定义。
代码如下:
<?php
define("MESSAGE","能看到一次");
echo MESSAGE;
echo Message;
define("COUNT","能看到多次",true);
echo "<br>";
echo COUNT;
echo "<br>";
echo Count;
echo "<br>";
echo constant("Count");
echo "<br>";
echo (defined("MESSAGE"));
?>
注意:在上述代码中很有可能报错
解决办法:
关于error_reporting()函数的de调整
修改php.ini error_reporting = E_ALL & ~E_NOTICE
3.1.2 预定义变量
PHP中预定义常量
常量名 | 功能 |
__FILE__ | 默认常量,PHP程序的完整路径和文件名 |
__LINE__ | 默认常量,PHP程序行数 |
PHP_VERSION | 内建常量,PHP程序的版本,如“3.0.8_dev” |
PHP_OS | 内建常量,执行PHP解析器的操作系统名称,如“WINNT” |
TRUE | 这个常量是一个真值(true) |
FALSE | 这个常量是一个假值(false) |
NULL | 一个null值 |
E_ERROR | 这个常量指到最近的错误处 |
E_WARNING | 这个常量指到最近的警告处 |
E_PARSE | 这个常量指到解析语法有潜在问题处 |
E_NOTICE | 这个常量为发生不寻常,但不一定错误处 |
说明:
__FILE__和__LINE__中的“__”是两条下划线而不是一条。
举个栗子:
<?php
echo "当前文件路径为:".__FILE__;
echo "<br>";
echo "当前行数为:".__LINE__;
echo "<br>";
echo "当前PHP的版本信息为:".PHP_VERSION;
echo "<br>";
echo "当前操作系统为:".PHP_OS;
?>
注意,在每个语句中都有一个".",把语句和预定义常量隔开。
3.2 变量
3.2.1 变量的概念
值可以改变的量称为变量。
3.2.2 定义和使用变量
PHP与其他语言的区别在于PHP中变量使用之前不需要声明变量。用$和标识符表示,变量名是区分大小写的。
PHP中变量名称遵循以下约定:
(1)区分大小写
(2)变量名必须以($)开始
(3)名字开头可以为"_"
(4)名字不可以数字字符开头
例:
<?php
$n_sum=100; //定义一个整型变量
$str1=false; //定义一个布尔型变量
$str2=""; //定义一个空字符串
?>
字符传的初始值为空值;整形的初始值为0;布尔型的初始值为false。
PHP中变量名区分大小写,函数名称不区分大小写。
3.2.3 变量的赋值方式
直接赋值、传值赋值、引用赋值
1.直接赋值
直接赋值就是使用"="直接将值赋给某个变量。例如:
<?php
$name="mingri";
$number=30;
echo $name;
echo $number;
?>
结果如下:
mingri
30
2.传值赋值
传值赋值就是使用"="将一个变量的值赋给另一个变量。
<?php
$str1="PHP编程词典";
$str2=$str1;
?>
3.引用赋值(类似于指针)
<?php
$str="学习PHP很想轻松";
$str2=&$str;
$str="我要大声告诉你: $str";
echo $str2;
echo "<p>";
echo $str;
?>
3.2.4 可变变量
可变变量一般是指使用一个变量的值作为另一个变量的名称。通常用两个"$"符号实现。
例子:
<?php
$change_name="php";
$php="编程的关键因素在于学好语言基础";
echo $change_name;
echo $$change_name;
?>
3.2.5 PHP预定义变量
预定义变量
$_SERVER['SERVER_ADDR'] | 当前运行脚本所在的服务器的IP地址 |
$_SERVER['SERVER_NAME'] | 当前运行脚本所在服务器主机的名称。如在虚拟机上则由虚拟机的设置值所决定。 |
$_SERVER['REQUEST_METHOD'] | 访问主页时的请求方法,如GET、HEAD、POST、PUT等。 |
$_SERVER['REMOTE_ADDR'] | 正在浏览当前页面的用户的IP地址。 |
$_SERVER['REMOTE_HOST'] | 正在浏览当前页面的用户的主机名。 |
$_SERVER['REMOTE_PORT'] | 用户连接到服务器所使用的端口。 |
$_SERVER['SCRIPT_FILENAME'] | 当前执行脚本的绝对路径名。 |
$_SERVER['SERVER_SIGNATURE'] | 服务器所使用的端口,默认为80.如果使用SSL安全链接,则这个值为用户设置的HTTP端口。 |
$_SERVER['DOCUMENT_ROOT'] | 包含服务器版本和虚拟机名的字符串。 |
$_COOKIE | 通过HTTPCookie传递的脚本的信息。 |
$_SESSION | 包含与所有绘画变量有关的信息。 |
$_POST | 包含通过POST方法传递的参数的信息,只要用于获取通过POST方法提交的数据。 |
$_GET | 包含通过GET方法传递的参数的相关信息,主要用于获取GET通过GET方法提交的数据。 |
$GLOBALS | 由所有已经定义全局变量组成的数组。变量名就是该数组的索引。 |
3.3 PHP运算符
字符串运算符、算术运算符、赋值运算符、递增或递减运算符、位运算符、逻辑运算符、比较运算符、条件运算符。
3.3.1 算术运算符(四则运算)
常用的算术运算
名称 | 操作符 | 实例 |
加法运算 | + | $a+$b |
减法运算 | - | $a-$b |
乘法运算 | * | $a*$b |
除法运算 | / | $a/$b |
取余数运算 | % | $a%$b |
3.3.2 字符串运算符
字符串运算符只有一个,即英语的句号 ”.“。它将两个或多喝字符串连接起来。
举个栗子:
<?php
$m="520abc";
$n=1; $mn=$m.$n;
echo $mn."<br>";
$nm=$m+$n;
echo $nm."<br>";
?>
结果如下:
520abc1
521
3.3.3 赋值运算符
赋值运算符主要用于处理表达式的赋值操作。
PHP中常用的赋值运算符:
操作 | 符号 | 实例 | 展开形式 |
赋值 | = | $a=$b | $a=$b |
加 | += | $a+=$b | $a=$a+$b |
减 | -+ | $a-=$b | $a=$a-$b |
乘 | *= | $a*=$b | $a=$a*$b |
除 | /= | $a/=$b | $a=$a/$b |
连接字符 | .= | $a.=$b | $a=$a.$b |
取余数 | %= | $a%=$b | $a=$a%$b |
3.3.4 位运算符
位运算符是指对二进制位从低位到高位对齐后进行运算。
PHP中的位运算符
符号 | 作用 | 实例 |
& | 按位与 | $m&$n |
| | 按位或 | $m|$n |
^ | 按位异或 | $m^$n |
~ | 按位取反 | $m~$n |
<< | 向左移位 | $m<<$n |
>> | 向右移位 | $m>>$n |
3.3.5递增或递减运算符(和c语言一样的意义)
举个栗子:
<?php $a=6;
$b=9; echo "\$a=$a,\$b=$b<p>";
echo "\$a++=".$a++."<br>";
echo "运算后、\$a的值:" .$a."<p>";
echo "++\$b=".++$b."<be>";
echo "运算后\$b的值:".$b;
echo "<hr><p>";
?>
3.3.6 逻辑运算符
PHP中的逻辑运算符
运算符 | 实例 | 结果为真 |
&&或and(逻辑与) | $m and $n | 当$m 和 $n 都为真时 |
||或or(逻辑或) | $m || $n | 当其中至少一个为真时 |
xor(逻辑异或) | $m xor $n | 当两者一真一假时 |
!(逻辑非) | !$m | 当$m为假时 |
3.3.7 比较运算符
比较结果为真则返回true,假返回false。
PHP中的比较运算符
运算符 | 实例 |
< | 小于 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
== | 相等 |
!= | 不等 |
=== | 恒等 |
!== | 非恒等 |
说明:
$a===$b 是指两个变量不仅在数值上相等,而且类型也一样。
$a!==$b 说明$a和$b或者数值不等,或者类型不同
3.3.8 条件运算符
语法格式如下:
表达式1?表达式2:表达式3
如果表达式1的值为true,则执行表达式2,否则执行表达式3.
3.3.9 运算符优先级
PHP运算符的优先级
优先级别(从低到高) | 运算符 |
1 | or,and,xor |
2 | 赋值运算符 |
3 | ?: |
4 | ||,&& |
5 | |,^ |
6 | & |
7 | ==,!=,===,!== |
8 | < , > ,<= ,>= |
9 | << , >> |
10 | +,- |
11 | *, / , % |
12 | ! , ~ |
13 | ++ , -- |
3.4 表达式
将运算符和操作数连接起来的式子叫做表达式。
注意:每个表达式的结尾都要加“分号”。
3.5 数据类型的转换
3.5.1 自动转换
数据类型的自动转换是指在定义常量或变量时,不需要指定常量或变量的数据类型。在代码执行过程中,PHP会根据需要将常量或变量转换为合适的数据类型。
转换规则:
(1)布尔型数据和数值型数据在进行算术运算时,True被转换为整数1,False被转换为整数0。
(2)字符串类型数据和数值类型在进行算术运算时,如果字符串以数字开头,将被转换为相应的数字;如果字符串不是以数字开头,将被转换为整数0;
(3)在进行字符串连接运算时,整数、浮点数将被转换为字符串数型数据,布尔值True将被转换为字符串“1”,布尔值False和Null将被转换为空字符串“ ”。
(4)在进行逻辑运算时,整数0,浮点数0.0、空字符串“ ”、字符串“0”、Null以及空数组将被转换为布尔值False,其他数据将被转换为布尔值True。
3.5.2 强制转换
1.应用括号括起来的类型名称进行转换
PHP允许转换的类型
转换操作符 | 转换类型 | 举例 |
(boolean),(bool) | 转换为布尔型 | (boolean)$num , (bool)$str |
(string) | 转换为字符型 | (string)$flo |
(integer),(int) | 转换为整形 | (integer)$boo , (int)$str |
(float),(double),(real) | 转换为浮点型 | (float)$str , (double)$str |
(array) | 转化为数组 | (array)$str |
(object) | 转换为对象 | (object)$str |
注意:
在进行类型转换的过程中,应该注意,转化为boolean型时,null、0和未赋值的变量或数组会被转换为false,其他的为真;转换成整形时,布尔型的false转换为0,true转换为1,浮点型小数的部分被舍去,字符型如果以数字开头,就截取到非数字位,否则输出0.
2.使用以val结尾的函数
常用的有 intval()、floatval()、strval()
语法格式:
函数名 | 语法格式 | 返回值 |
intval | int intval(mixed var) | 返回var的整数值 |
floatval | float floatval(mixed var) | 返回var的浮点数值 |
strval | string strval(minxed var) | 返回var的字符串值 |
举个栗子:
<?PHP $str= "123.456abc";
$int= intval($str);
$flo= floatval($str);
$str= strval($str);
var_dump($int);
echo("<br>");
var_dump($flo);
echo("<br>");
var_dump($str);
?>
3.使用settype()函数
该函数可以将指定的变量转换成指定的数据类型
bool settype(mixed var,string type)
(1)参数var为指定的变量
(2)参数type为指定的类型,有七个可选的值:boolean 、 float 、 integer 、 array 、 null 、 object 和 string。如果转换成功,则返回true,否则返回false
注意:
使用settype()函数设置变量数据类型时,变量本身的数据类型将会发生变化。