.

PHP 基本语法2

文章作者:eKing
发表时间:2016年11月13日 01:28
浏览次数:163

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():检测变量是否是数组

下一篇:PHP 数据类型3