第 5 章 PHP 的组成部分
第 5 章 PHP 的组成部分
5.1 变量
一个变量由你所选取的一个名字以及前面的一个美元符($)组成。
一个分号(;
)(又叫做指令终止符,instruction terminator)用来结束一条 PHP 语句。
注意:每一条语句都要以分号结束,不然会报错。
5.1.2 超全局变量
预定义变量 http://php.net/manual/en/reserved.variables.php
在脚本中使用超全局变量对于创建安全的应用程序很重要,因为超全局变量减少了用户注入式攻击进入到脚本的可能性。
5.2 数据类型
PHP 是类型宽松的语言,这意味着它将在数据被赋给每个变量的时候才确定数据类型。
程序清单 5.1 测试一个变量的类型
<?php
$testing;
echo "is null? ".is_null($testing);
echo "<br/>";
$testing = 5;
echo "is an integer? ".is_int($testing);
echo "<br/>";
$testing = "five";
echo "is a string? ".is_string($testing);
echo "<br/>";
$testing = 5.024;
echo "is a double? ".is_double($testing);
echo "<br/>";
$testing = true;
echo "is boolean? ".is_bool($testing);
echo "<br/>";
$testing = array('apple', 'orange', 'pear');
echo "is an array? ".is_array($testing);
echo "<br/>";
echo "is numeric? ".is_numeric($testing);
echo "<br/>";
?>
结果:
is null? 1
is an integer? 1
is a string? 1
is a double? 1
is boolean? 1
is an array? 1
is numeric?
5.2.1 使用 settype()
来改变变量的数据类型
程序清单 5.2 使用 settype()
修改一个变量的类型
<?php
$undecided = 3.14;
echo "is ".$undecided." a double? ".is_double($undecided)."<br/>";
settype($undecided, 'string');
echo "is ".$undecided." a string? ".is_string($undecided)."<br/>";
settype($undecided, 'integer');
echo "is ".$undecided." an integer? ".is_integer($undecided)."<br/>";
settype($undecided, 'double');
echo "is ".$undecided." a double? ".is_double($undecided)."<br/>";
settype($undecided, 'bool');
echo "is ".$undecided." a boolean? ".is_bool($undecided)."<br/>";
?>
结果:
is 3.14 a double? 1
is 3.14 a string? 1
is 3 an integer? 1
is 3 a double? 1
is 1 a boolean? 1
5.2.2 通过类型转换改变变量的数据类型
使用 settype()
来改变一个已有变量的类型和使用类型转换改变变量类型的主要区别在于,类型转换会生成一个拷贝,而保持原来的变量不动。
程序清单 5.3 对一个变量进行类型转换
<?php
$undecided = 3.14;
$holder = (double)$undecided;
echo "is ".$holder." a double? ".is_double($holder)."<br/>";
$holder = (string)$undecided;
echo "is ".$holder." a string? ".is_string($holder)."<br/>";
$holder = (integer)$undecided;
echo "is ".$holder." an integer? ".is_integer($holder)."<br/>";
$holder = (double)$undecided;
echo "is ".$holder." a double? ".is_double($holder)."<br/>";
$holder = (boolean)$undecided;
echo "is ".$holder." a boolean? ".is_bool($holder)."<br/>";
$holder = (integer)$undecided;
echo "is ".$holder." an integer? ".is_integer($holder)."<br/>";
echo "<hr/>";
echo "original variable type of $undecided: ";
echo gettype($undecided);
?>
结果:
is 3.14 a double? 1
is 3.14 a string? 1
is 3 an integer? 1
is 3.14 a double? 1
is 1 a boolean? 1
is 3 an integer? 1
original variable type of 3.14: double
5.3 操作符和表达式
5.3.3 连接操作符
连接操作符用一个句点(.
)表示。它把两个操作数都当做是字符串,把右操作数附加到左操作数上。如
"hello"." world"
返回
hello world
不管和连接操作符一起使用的操作数是什么数据类型,它们都会被当做字符串对待,并且结果也总是字符串类型。
5.4 常量
常量必须使用 PHP 内建的 define()
函数来创建,随后这个常量是不能改变的,除非再次明确地 define()
它。
常量只能使用常量名访问,不需要美元符号。
程序清单 5.4 定义和访问一个常量
<?php
define("THE_YEAR", "2012");
echo "It is the year ".THE_YEAR.".";
?>
结果:
It is the year 2012.
预定义常量 http://php.net/manual/en/language.constants.predefined.php