目录
1 变量概述
1.1 不同编程语言变量的声明
- C/C++等在强类型的编程语言中,我们必须在使用变量前先声明(定义)变量的类型和名称。
- PHP/Python等弱类型语言,在变量赋值前不需要明确声明变量的类型。
1.2 PHP变量
- 变量可以是很短的名称(如 x 和 y)或者更具描述性的名称(如 age、carname、totalvolume)。
- PHP 变量规则:
- 变量以 $ 符号开始,后面跟着变量的名称
- 变量名必须以字母或者下划线字符开始
- 变量名只能包含字母、数字以及下划线(A-z、0-9 和 _ )
- 变量名不能包含空格
- 变量名是区分大小写的($y 和 $Y 是两个不同的变量)
- 变量释放:使用unset(变量名)函数释放指定变量。
1.3 PHP可变变量
- 一个变量名称可以动态地设置和使用。
- 例子:将下述语句写入index.php文档,保存后通过浏览器访问时提示可变变量没有被创建。
<?php
$name1 = "ABC";
$$name2 = "EFG";
echo $name1;
echo "<br>";
echo $ABC;
?>
1.4 PHP变量赋值方式
- 直接赋值:采用字符串、数值或已初始化的变量对变量赋值。
- 引用赋值:利用已初始化变量并带前缀&对变量赋值。
- 相当于取别名;
- 指向同一内存空间;
- 新旧变量有一个重新赋值时,另一个变量值将一同被修改。
- 例子代码和浏览器浏览结果如下:
<?php
header("content-type:text/html;charset=utf-8");
$name1 = "ABC";
$name2 = &$name1;
echo "name1:$name1";
echo " | ";
echo "name2:$name2";
echo "<br>修改后:<br>";
$name2 = "EFG";
echo "name1:$name1";
echo " | ";
echo "name2:$name2";
?>
2 PHP变量数据类型
- 变量类型是指保存在该变量中数据的数据类型,在计算机编程语言世界中,每个数据都有它的数据类型。
- 只有相同类型的数据才能相互操作。不同类型间直接相互操作会返回0(表示false),需要先进行类型转换才能相互操作。
- PHP变量类型有:
- String(字符串)
- Integer(整型)
- Float(浮点型)
- Boolean(布尔型)
- Array(数组)(后续再专文介绍)
- Object(对象)(后续再专文介绍)
- NULL(空值)
2.1 字符串
- 一个字符串是一串字符的序列,就像 “Hello world!”。
- 声明:可以用单引号、双引号、定界符来定义:
- 单引号声明注意事项:
- 单引号括起来的字符串不能在包含单引号,如果要包含单引号需要使用反斜杠(\)转义。
- 单引号字符串不能正确识别与解析变量,仅认为是字符串。
- PHP不会解析单引号中的变量,因此在定义简单字符串时,使用单引号会使运行效率更高。
- 双引号声明注意事项:
- 双引号字符串中出现的变量能被变量值所代替,建议将变量名整体使用{}括起来。
- 双引号字符串中可以出现单引号。
- 双引号字符串中要出现特殊字符,需要使用反斜杠(\)转义。
- 定界符声明变量:
- 开始行:"$变量名=<<<HTML"其中HTML是标识符开始,大写字母,建议使用HTML;
- 中间行:字符串内容。
- 结束行:"HTML;"以标识符加分号结束。
- 开始行与结束行在语句后不能有其他内容,包括空格与注释语句。
- 语法:
<?php
header("content-type:text/html;charset=utf-8");
$name = "PHP";
echo '单引号:Hello,$name'; //执行结果为 单引号:Hello,$name
echo "<br>";
echo "双引号:Hello,{$name}"; //执行结果为 单引号:双引号:Hello,PHP
echo "<br>";
$test=<<<HTML
定界符:Hello, $name
HTML;
echo $test; //执行结果为 定界符:Hello, PHP
?>
2.2 整型
- 整数是一个没有小数的数字。
- 整数规则:
- 整数必须至少有一个数字 (0-9)
- 整数不能包含逗号或空格
- 整数是没有小数点的
- 整数可以是正数或负数
- 整型可以用三种格式来指定:十进制, 十六进制( 以 0x 为前缀)或八进制(前缀为 0)。
- 语法:
<?php
$x = 123;
var_dump($x); //执行结果为int(123)
echo "<br>";
$x = -123; // 负数
var_dump($x); //执行结果为int(-123)
echo "<br>";
$x = 0x8C; // 十六进制数
var_dump($x); //执行结果为int(140)
echo "<br>";
$x = 047; // 八进制数
var_dump($x); //执行结果为int(39)
?>
2.3 浮点型
- 浮点数是带小数部分的数字,或是指数形式。
- 语法:
<?php
$x = 10.365;
var_dump($x); //执行结果为float(10.365)
echo "<br>";
$x = 2.4e3; //创建指数
var_dump($x); //执行结果为float(2400)
echo "<br>";
$x = 8E-5; //创建指数
var_dump($x); //执行结果为float(8.0E-5)
?>
2.4 布尔型
- 布尔型可以是 true 或 false。
- 布尔型通常用于条件判断或控制某个功能是否执行。
- 系统将对以下变量认为是false:
- 布尔类型false;
- 整型0;
- 浮点型0.0;
- 空白字符串或字符0;
- null值。
- 语法:
<?php
$x1 = false;
if($x1){echo "ture";}else{var_dump($x1);} //执行结果为bool(false)
echo "<br>";
$x2 = 0;
if($x2){echo "ture";}else{var_dump($x2);} //执行结果为int(0)
echo "<br>";
$x3 = 0.0;
if($x3){echo "ture";}else{var_dump($x3);} //执行结果为float(0)
echo "<br>";
$x4 = "";
if($x4){echo "ture";}else{var_dump($x4);} //执行结果为string(0) ""
echo "<br>";
$x5 = "0";
if($x5){echo "ture";}else{var_dump($x5);} //执行结果为string(1) "0"
echo "<br>";
$x6 = null;
if($x6){echo "ture";}else{var_dump($x6);} //执行结果为NULL
?>
2.5 数据类型转换
- 数据类型转换有两种类型,一种是自动类型转换,一种是强制类型转换。
- 自动类型转换:
- 有布尔值参与运算时,true将转化为整型1,false将转化为整型0。
- 有null值参与运算时,null值将转化为整型0再进行运行。
- 有整型和浮点型数据参与运算时,先把整型转化为浮点型在进行运算。
- 有字符串和数字型参与运算时,在程序运行中不太可控,最好避免。
- 强制类型转换:
在要装换的变量前加上括号括起来的目标类型:(int)、(bool)、(float)、(string)、(array)、(object)。 - 数据进行类型转换仅是参与运行,并非改变变量本身类型。
- 语法:
<?php
$x=true;
$y=1;
$z=$x+$y;
echo "x:{$x},is_bool:";
echo is_bool($x);
echo "<br>"; //这三句执行结果为 x:1,is_bool:1并换行
echo "y:{$y},is_int:";
echo is_int($y);
echo "<br>"; //这三句执行结果为 y:1,is_int:1并换行
echo "z:{$z},is_int:";
echo is_int($z);
echo "<br>"; //这三句执行结果为 z:2,is_int:1并换行
?>
3 常量
- 常量是一个简单之的提示符,在PHP脚本执行期间一旦被定义,就不能被改变或取消定义。
- 常量的作用域是全局的,只能包含bool、int、float、string类型的数据。
- 定义(常命名为大写)与使用语法:
<?php
define("NAME","ABC",ture); //第三个参数时控制该变量名是否大小写敏感,设为TRUE时,使用name也可以引用该变量。
echo var_dump(NAME); //执行结果为string(3) "ABC"
?>
- 预定义常量
常量名 | 常量值 |
---|---|
FILE | 当前文件名 |
LINE | 当前行数 |
FUNCTION | 当前函数名 |
CLASS | 当前类名 |
METHOD | 当前对象方法名 |
PHP_OS | UNIX或WINNT等 |
PHP_VERSION | 当前PHP版本 |
DIRECTORY_SEPARATOR | 根据系统决定的目录分隔符 \(Windows)或/(Linux) |
- 常量与变量的区别:
- 常量签名没有美元符号$。
- 常量只能用define()函数进行定义,不能通过赋值语句赋值或初始化。
- 常量可以不同理会变量范围的规则而在任何地方定义和使用。
- 常量一旦被定义就不能被重新定义或取消定义。
- 常量的类型bool、int、float、string类型的数据。
4 总结
- 理解PHP常量与变量的区别;
- 了解PHP变量的数据类型;
- 掌握各种数据类型的定义与使用方式;
- 掌握数据类型转换的方法;
- 了解常量的定义与使用方式;
- 了解预定义常量类型及含义。