PHP 基本语法2
PHP 基本语法
PHP 书写格式
从一个例子开始。
启动编辑器,创建一个php文件并键入如下代码:
<?php
echo "你好!";
?>
将该文件命名为 test.php 并存储于 E:html 目录下。
在浏览器地址栏里访问该 php 文件:http://127.0.0.1/test.php,输出结果如下:
你好!
我们通过浏览器查看网页的源代码,也只是:
你好!
在该例子中,我们以 echo 指令输出一个字符串“你好!”。
从这个例子可以看出:
PHP 文件或 PHP 代码段以“<?php”开头,以“?>”结束,中间为php代码
每一个指令集以 ; 符号结束
浏览器得到的为 PHP 解析器执行完 php 代码后的结果,网站浏览者不能查看到 php 文件的原始代码
当然,要输出标准的html代码,可以把上例完善为:
<html>
<head>
<title>PHP 测试</title>
</head>
<body>
<p>
<?php
echo "你好!";
?>
</p>
</body>
</html>
可见,PHP 代码可以和 XHTML 代码混写。
echo 是 PHP 内置的一个指令,用于输出1个或多个字符串,和 echo 类似的还有 print。
PHP 变量
PHP 变量
PHP变量用于存储字符、数字、数组甚至对象资源等,以便在我们需要的地方使用。
定义一个变量的语法:
$变量名 = 值;
使用变量的例子:
<?php
$var_char = "你好!";
echo $var_char;
?>
执行这段代码输出的结果是:
你好!
从这个例子可以看出,变量名以 $ 开始,标明这是一个变量。变量名以字母(a-z、A-Z)或者下划线 _ 开始,后面可以跟任意字母或数字以及下划线,但不能是空格。
如下这些变量名是有效的:
$var_char
$varChar
$_varChar
$var_char5
提示
关于变量命名,我们建议变量名以标明其实际语意的组合为佳,如 $my_name 或 $myName 格式。
延伸阅读
与 C 语言等强类型的编程语言不同,PHP 是一门松散类型的语言,即不需要在设置变量之前声明该变量。根据变量被设置的方式,PHP 会自动地把变量转换为正确的数据类型,且变量会在使用时被自动声明,这一属性给 Web 编程带来了极大的灵活性
PHP 常量
PHP 常量
define() 函数用于定义常量。一个常量一旦被定义,就不能再改变或者取消定义。
定义常量的例子:
<?php
define("CONSTANT", "你好!");
echo CONSTANT;
?>
常量名和其它任何 PHP 标签遵循同样的命名规则。合法的常量名以字母或下划线开始,后面跟着任何字母,数字或下划线。
常量默认为大小写敏感,按照惯例常量标识符总是大写的,在脚本执行期间该值不能改变。
定义常量和定义变量的区别:
常量前面没有美元符号($)
常量只能用 define() 函数定义,而不能通过赋值语句
常量可以不用理会变量范围的规则而在任何地方定义和访问
常量一旦定义就不能被重新定义或者取消定义
常量的值只能是标量
PHP内置了大量预定义常量,具体可参看PHP手册。
PHP 注释符号与注释格式
PHP 注释
注释(Comments)是指在程序编写过程中,对程序文件或者代码片段额外添加的一个备注说明。通过注释可以提高代码可读性,让自己或其他开发人员更快速地理解程序的。
注释在程序编程中非常重要,恰当的注释程序不仅是程序员的个人习惯,更是责任的体现。但在实际过程中,大部分程序员都没有良好的对程序进行注释习惯,这往往会在日后对自己或他人造成相当大的麻烦。
PHP 注释不属于 PHP 程序的一部分,其内容也不参与程序中的任何功能计算,在编辑器中以特殊颜色(如绿色)显示。
PHP 注释符号
PHP 支持 C++,C 和 Unix Shell 风格(Perl 风格)的注释,所以也产生了 3 种PHP注释符号:
C++ 风格:// 这是 C+ 风格的注释
C 风格:/* 这是 C 风格的注释 */
Unix Shell 风格:# 这是 Unix Shell 风格的注释
一般大家都习惯使用 C 风格与 C++ 风格的注释。在一些系统配置文档中,如前面PHP开发环境安装章节的《Apache 安装与配置》一文中,httpd.conf 配置文件使用的就是 # 注释符号。
PHP 注释格式
PHP 注释格式分为单行注释与多行注释。
PHP 单行注释
以上三种符号都可用于单行注释,只是使用 // 或 # 注释符时,注释符号后面的文本(本行内)都被视作注释内容,而 /* */ 风格注释符必须以 */ 结尾。
例子:
<?php
// 这是单行注释
echo '你好!'; // 这是单行注释,写在一行代码后面也叫行尾注释
/* 这个注释风格也不错 */
# 较少用的风格
?>
上面的行尾注释,通常只是对本行前面的内容进行注释,单写一行的注释可能是对下面的一行或多行代码进行注释,也可能是为了程序的整体美观。
PHP 多行注释
多行注释一般使用 C 风格注释符,以 /* 开头,*/ 结尾来包含多行注释内容:
<?php
echo "你好!";
/*
这是多行大块注释
这里面都是注释内容
更多注释内容等
*/
?>
注意
不要嵌套使用 C 风格注释符,因为在碰到第一个 */ 时系统即认为该段注释结束,在注释掉一大块代码时很容易出现该错误。如下述用法将产生 PHP 语法错误:
<?php
echo '你好!';
/*
这是多行大块注释
echo '输出另一些内容'; /* 添加的本行注释 */
*/
?>
也可以多次使用 // 符号来注释多行代码,但一般只限于有限的几行:
<?php
// 分页显示定制
// upPage:上一页
// downPage:下一页
protected $config = array(
'header' => '条记录',
'prev' => '上一页',
'next' => '下一页',
}
?>
提示
PHP 注释中不能包含 PHP 代码结束符即:?>,因为在任何地方,PHP 检测到该结束符,即认为该段 PHP 代码结束而跳出 PHP 的执行。
PHP isset() 检测变量是否设置
isset() 用于检测变量是否设置。
isset()
PHP isset() 用于检测一个或多个变量是否设置,如果被检测的变量存在则返回 TRUE,否则返回 FALSE。
语法:
bool isset( mixed var [, mixed var [, ...]] )
如果检测多个变量时,只要其中一个变量存在,则检测结果就会返回 TRUE 。
例子:
<?php
$var = 1;
if(isset($var)){
echo '变量 $var 已经被设置';
} else {
echo '变量 $var 还未被设置';
}
?>
运行该例子输出:
变量 $var 已经被设置
注意
isset() 只能用于检测变量,传递任何其它参数都将造成解析错误。
isset() 是一个语言结构而非函数,因此它无法被变量函数调用。
提示
下述情况,isset() 返回 FALSE :
// 变量被设置为 null
$var = null;
// 被 unset() 释放了的变量
unset($var);
// 类里变量被 var 关键字声明,但尚未设定
var $var;
下述情况,isset() 返回 TRUE :
$var = "";
$var = array();
$var = 0;
$var = false;
参考阅读
defined():检测常量是否被定义
empty():检测一个变量是否为空
unset():释放给定的变量
is_array():检测变量是否是数组
PHP empty() 检测一个变量是否为空
empty() 函数用于检测一个变量是否为空。
empty()
PHP empty() 用于检测一个变量是否为空,如果被检测的变量为空则返回 TRUE,否则返回 FALSE 。
语法:
bool empty( mixed var )
例子:
<?php
$var = "";
if(empty($var)){
echo '变量 $var 为空';
} else {
echo '变量 $var 不为空';
}
?>
运行该例子输出:
变量 $var 为空
注意
empty() 只能用于检测变量,如这种用法是非法的: empty(addslashes($var)) 。
empty() 是一个语言结构而非函数,因此它无法被变量函数调用。
提示
下述情况,empty() 返回 TRUE :
// 变量没有值
$var = "";
// 变量值为 0 或 "0"
$var = 0;
$var = "0";
// 空数组
$var = array();
// 变量被设置为 null
$var = null;
// 变量被设置为 false
$var = false;
// 被 unset() 函数释放了的变量
unset($var);
// 类里变量被 var 关键字声明,但尚未设定
var $var;
empty() 与 isset() 的比较
empty() isset() (bool)
$var = "" TRUE TRUE FALSE
$var = null TRUE FALSE FALSE
$var = FALSE TRUE TRUE FALSE
var $var TRUE FALSE FALSE
$var = array() TRUE TRUE FALSE
$var = 0 TRUE TRUE FALSE
$var = "0" TRUE TRUE FALSE
可见 empty() 是比 isset() 对变量更严格的检查。
参考阅读
isset():检测变量是否设置
unset():释放给定的变量
PHP unsert() 销毁变量
unset() 用于销毁一个或多个变量。
unset()
PHP unset() 用于销毁一个或多个变量,没有返回值。
语法:
void unset( mixed var [, mixed var [, ...]] )
例子:
<?php
// 销毁单个变量
unset ($var);
// 销毁单个数组元素
unset ($arr['a']);
// 销毁多个变量
unset ($var1, $var2, $var3);
?>
unset() 静态变量
严格讲,使用 unset() 销毁静态变量,只是断开了变量名和变量值之间的引用。
例子:
<?php
function foo() {
static $b;
$a++;
$b++;
echo "$a---$bn";
unset($a,$b);
var_dump($a);
var_dump($b);
echo "######################n";
}
foo();
foo();
foo();
?>
运行该例子,输出:
1---1
NULL
NULL
#######################
1---2
NULL
NULL
#######################
1---3
NULL
NULL
#######################
unset() 全局变量
同 unset() 静态变量一样,如果在函数中 unset() 一个全局变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。
试着比较如下两个例子:
<?php
function destroy_foo() {
global $foo;
unset($foo);
}
$foo = 'bar';
destroy_foo();
echo $foo;
?>
<?php
function destroy_foo() {
global $foo;
unset($GLOBALS['foo']);
}
$foo = 'bar';
destroy_foo();
echo $foo;
?>
运行第一个例子会输出:bar ,而第二个例子则不会有任何输出。
关于静态变量(static)与全局变量(global)引用更详细的官方参考文档:http://www.php.net/manual/zh/language.variables.scope.php#language.variables.scope.references
提示
在很多情况下,可以让 PHP 自动管理变量而无需考虑 unset() 变量。只有在特定的,需要某个变量必须为空的时候才使用到。如:用户退出登录时,为了确保信息的安全性,可以用 unset() 清空 session 的内容。
unset() 尽量不要用在静态变量上,因为这与定义静态变量的初衷相悖。
unset() 是一个语言结构而非函数,因此它无法被变量函数调用。
参考阅读
isset():检测变量是否设置
empty():检测一个变量是否为空
PHP defined() 检测常量是否被定义
defined() 用于检测给定的常量是否被定义。
isset()
PHP defined() 用于检测一个给定的常量是否被定义,如果被检测的常量已定义则返回 TRUE,否则返回 FALSE。
语法:
bool defined( string name )
例子:
<?php
define('CONSTANT', "你好!");
if(defined('CONSTANT')){
echo '常量 CONSTANT 已经被定义';
} else {
echo '常量 CONSTANT 还未被定义';
}
?>
运行该例子输出:
常量 CONSTANT 已经被定义
参考阅读
define():定义一个常量
isset():检测变量是否设置
is_array():检测变量是否是数组