PHP中的变量用一个美元符号后面跟变量名来表示。变量名是区分大小写的。
变量名与PHP中其它的标签一样遵循相同的规则。一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母,数字,或者下划线。按照正常的正则表达式,它将被表述为:'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*‘。
$this
是一个特殊的变量,它不能被赋值。
基础
以$
开头,跟着字母或者下划线,后面可以是数字,甚至是中文。不过要按照命名规范,使用驼峰命名.
1
2
3
4
5
6
7
8
9
10
11
12
|
<?php
$var
=
'Bob'
;
$Var
=
'Joe'
;
// 区分大小写
echo
"$var, $Var"
;
// 输出 "Bob, Joe"
$
4site
=
'not yet'
;
// 非法变量名;以数字开头
$_4site
=
'not yet'
;
// 合法变量名;以下划线开头
$i站点
is
=
'mansikka'
;
// 合法变量名;可以用中文
?>
|
使用引用赋值,简单地将一个 & 符号加到将要赋值的变量前(源变量)。例如,下列代码片断将输出“My name is Bob”两次:
1
2
3
4
5
6
7
8
9
10
11
|
<?php
$foo
=
'Bob'
;
// 将 'Bob' 赋给 $foo
$bar
=
&
$foo
;
// 通过 $bar 引用 $foo
$bar
=
"My name is $bar"
;
// 修改 $bar 变量
echo
$bar
;
echo
$foo
;
// $foo 的值也被修改
$vbar
=
&
(
24
*
7
)
;
// 非法; 引用没有名字的表达式
?>
|
默认值:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
// 未赋值和无上下文声明的变量,默认值为NULL
var_dump
(
$
unset_var
)
;
// 可根据上下文
echo
(
$
unset
_
bool
?
"true\n"
:
"false\n"
)
;
// String usage; outputs 'string(3) "abc"'
$
unset
_
str
.
=
'abc'
;
var_dump
(
$
unset_str
)
;
// Integer usage; outputs 'int(25)'
$
unset_int
+=
25
;
// 0 + 25 => 25
var_dump
(
$
unset_int
)
;
// Float/double usage; outputs 'float(1.25)'
$
unset_float
+=
1.25
;
var_dump
(
$
unset_float
)
;
// Array usage; outputs array(1) { [3]=> string(3) "def" }
$
unset_arr
[
3
]
=
"def"
;
// array() + array(3 => "def") => array(3 => "def")
var_dump
(
$
unset_arr
)
;
// Object usage; creates new stdClass object (see http://www.php.net/manual/en/reserved.classes.php)
// Outputs: object(stdClass)#1 (1) { ["foo"]=> string(3) "bar" }
$
unset_obj
->
foo
=
'bar'
;
var_dump
(
$
unset_obj
)
;
|
判断是否有值:
1
2
3
4
5
6
7
8
9
|
<?php
print
isset
(
$a
)
;
// $a is not set. Prints false. (Or more accurately prints ''.)
$b
=
0
;
// isset($b) returns true (or more accurately '1')
$c
=
array
(
)
;
// isset($c) returns true
$b
=
null
;
// Now isset($b) returns false;
unset
(
$c
)
;
// Now isset($c) returns false;
?>
|
预定义变量
1
2
3
4
5
6
7
8
9
|
$
_GET
// 所有GET请求参数
$
_POST
// 所有POST请求参数
$
_ENV
// 环境变量
$
_SERVER
$
_COOKIE
// cookie
$
_REQUEST
// 所有请求参数
$
_SESSION
// session值
|
PHP标记
PHP脚本以<?php 开头,以 ?> 结尾:
1
2
3
4
5
|
<?php
echo
"Hello world!"
;
?>
|
当解析一个文件时,PHP会寻找起始和结束标记,也就是 <?php 和 ?>,这告诉PHP开始和停止解析二者之间的代码。此种解析方式使得PHP可以被嵌入到各种不同的文档中去,而任何起始和结束标记之外的部分都会被PHP解析器忽略。
PHP也允许使用短标记 <? 和 ?>,但不鼓励使用。只有通过激活php.ini中的 shortopentag配置指令或者在编译PHP时使用了配置选项 –enable-short-tags 时才能使用短标记。
如果文件内容是纯PHP代码,最好在文件末尾删除PHP结束标记。这可以避免在 PHP结束标记之后万一意外加入了空格或者换行符,会导致PHP开始输出这些空白,而脚本中此时并无输出的意图。
例如,下面的是在一个文件中的,这个文件只有PHP代码,此时建义不要加上?>结束标识:
1
2
3
4
5
6
7
|
<
?
php
// Html safe containers
echo
"Hello world<br>"
;
echo
"test<br>"
;
echo
"www.henishuo.com"
;
|
从HTML中分离
凡是在一对开始和结束标记之外的内容都会被PHP解析器忽略,这使得PHP文件可以具备混合内容。可以使PHP嵌入到HTML文档中去,如下例所示:
1
2
3
4
5
6
7
|
<p>
This
is
going
to
be
ignored
by
PHP
and
displayed
by
the
browser
.
<
/
p
>
<?php
echo
'While this is going to be parsed.'
;
?>
<p>
This
will
also
be
ignored
by
PHP
and
displayed
by
the
browser
.
<
/
p
>
|
条件分离:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<?php
$expression
=
true
?>
<?php
if
(
$expression
==
true
)
{
echo
"expression is true"
;
}
?>
<?php
if
(
$expression
==
true
)
:
?>
This
will
show
if
the
expression
is
true
.
<?php
else
:
?>
Otherwise
this
will
show
.
<?php
endif
;
?>
|
指令分隔符
同C语言一样,PHP需要在每个语句后用分号结束指令。一段PHP代码中的结束标记隐含表示了一个分号;在一个PHP代码段中的最后一行可以不用分号结束。如果后面还有新行,则代码段的结束标记包含了行结束。
1
2
3
4
5
6
7
8
9
|
<?php
echo
"This is a test"
;
?>
<?php
echo
"This is a test"
?>
<?php
echo
'We omitted the last closing tag'
;
?>
|
注释
PHP支持C、C++、Unix Shell风格(Perl 风格)的注释。例如:
1
2
3
4
5
6
7
8
9
10
11
12
|
<?php
echo
"This is a test"
;
// This is a one-line c++ style comment
/* This is a multi line comment
yet another line of comment
*/
echo
"This is yet another test"
;
echo
'One Final Test'
;
# This is a one-line shell-style comment
?>
|
可以使用//
或者#
注释单行,可以使用/**/
注释段。