只是打印出 hello world
肯定是不够的,是吗?你会希望做得比这还要多——你想要输入一些内容,操纵它,然后从中得到一些输出出来的内容。我们可以在 PHP 中通过使用变量与常量来实现这一目标,在本章中我们还会学习其它的一些概念。
PHP 标记
当解析一个文件时,PHP 会寻找起始和结束标记,也就是 <?php
和 ?>
,这告诉 PHP 开始和停止解析二者之间的代码。此种解析方式使得 PHP 可以被嵌入到各种不同的文档中去,而任何起始和结束标记之外的部分都会被 PHP 解析器忽略。
如果文件内容是纯 PHP 代码,最好在文件末尾删除 PHP 结束标记。这可以避免在 PHP 结束标记之后万一意外加入了空格或者换行符,会导致 PHP 开始输出这些空白,而脚本中此时并无输出的意图。
注释
PHP 支持 C,C++ 和 Unix Shell 风格(Perl 风格)的注释。例如:
<?php
echo "This is a test"; // 这是 C++ 风格的单行注释
/* 这是一个
多行注释 */
echo "This is yet another test";
echo 'One Final Test'; # 这是 shell 风格的单行注释
注释主要用作写给程序读者看的笔记。
C 风格的注释在碰到第一个 */
时结束。要确保不要嵌套 C 风格的注释。试图注释掉一大块代码时很容易出现该错误。
<?php
/*
echo "This is a test"; /* 这个注释将要引起问题 */
*/
你应该在你的程序中尽可能多地使用有用的注释:
- 解释假设
- 说明重要的决定
- 解释重要的细节
- 说明你想要解决的问题
- 说明你想要在程序中克服的问题,等等。
代码会告诉你怎么做,注释会告诉你为何如此。
这样做对你的程序的读者来说非常有用,他们可以很容易地理解你的程序是做什么的。请记住,这个人可以是六个月后的你!
常量
常量是一个简单值的标识符(名字)。如同其名称所暗示的,在脚本执行期间该值不能改变。常量默认为大小写敏感。传统上常量标识符总是大写的。
常量名和其它任何 PHP 标签遵循同样的命名规则。合法的常量名以字母或下划线开始,后面跟着任何字母,数字或下划线。
<?php
// 合法的常量名
define("FOO", "something");
define("FOO2", "something else");
define("FOO_BAR", "something more");
// 非法的常量名
define("2FOO", "something");
// 下面的定义是合法的,但应该避免这样做:(自定义常量不要以__开头)
// 也许将来有一天PHP会定义一个__FOO__的魔术常量
// 这样就会与你的代码相冲突
define("__FOO__", "something");
常量的范围是全局的。不用管作用区域就可以在脚本的任何地方访问常量。
变量
PHP 中的变量用一个美元符号后面跟变量名来表示。变量名是区分大小写的。
变量名与 PHP 中其它的标签一样遵循相同的规则。一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母,数字,或者下划线。
<?php
$var = 'Bob';
$Var = 'Joe';
echo "$var, $Var"; // 输出 "Bob, Joe"
$4site = 'not yet'; // 非法变量名;以数字开头
$_4site = 'not yet'; // 合法变量名;以下划线开头
$i站点is = 'mansikka'; // 合法变量名;可以用中文
变量默认总是传值赋值。那也就是说,当将一个表达式的值赋予一个变量时,整个原始表达式的值被赋值到目标变量。
PHP 也提供了另外一种方式给变量赋值:引用赋值。这意味着新的变量简单的引用(换言之,“成为其别名” 或者 “指向”)了原始变量。改动新的变量将影响到原始变量,反之亦然。
使用引用赋值,简单地将一个 &
符号加到将要赋值的变量前(源变量)。例如,下列代码片断将输出“My name is Bob”两次:
<?php
$foo = 'Bob'; // 将 'Bob' 赋给 $foo
$bar = &$foo; // 通过 $bar 引用 $foo
$bar = "My name is $bar"; // 修改 $bar 变量
echo $bar;
echo $foo; // $foo 的值也被修改
有一点重要事项必须指出,那就是只有有名字的变量才可以引用赋值。
类型
PHP 支持 9 种原始数据类型。
四种标量类型:
- boolean(布尔型)
- integer(整型)
- float(浮点型,也称作 double)
- string(字符串)
三种复合类型:
- array(数组)
- object(对象)
- callable(可调用)
两种特殊类型:
- resource(资源)
- NULL(无类型)
Boolean 布尔类型
这是最简单的类型。boolean 表达了真值,可以为 TRUE 或 FALSE。
要指定一个布尔值,使用常量 TRUE 或 FALSE。两个都不区分大小写。
<?php
$foo = True; // 设置 $foo 为 TRUE
Integer 整型
integer 是集合 ℤ = {..., -2, -1, 0, 1, 2, ...} 中的某个数。
整型值可以使用十进制,十六进制,八进制或二进制表示,前面可以加上可选的符号(- 或者 +)。
<?php
$a = 1234; // 十进制数
$a = -123; // 负数
$a = 0123; // 八进制数 (等于十进制 83)
$a = 0x1A; // 十六进制数 (等于十进制 26)
$a = 0b11111111; // 二进制数字 (等于十进制 255)
Float 浮点型
浮点型(也叫浮点数 float,双精度数 double 或实数 real)可以用以下任一语法定义:
<?php
$a = 1.234;
$b = 1.2e3;
$c = 7E-10;
String 字符串
一个字符串 string 就是由一系列的字符组成,其中每个字符等同于一个字节。
单引号
定义一个字符串的最简单的方法是用单引号把它包围起来(字符 ')。
<?php
echo 'this is a simple string';
双引号
如果字符串是包围在双引号(")中, PHP 将对一些特殊的字符进行解析,如 \n
换行,\t
水平制表符等。另外最重要的特征是变量会被解析。
Heredoc 结构
第三种表达字符串的方法是用 heredoc 句法结构:<<<
。
<?php
$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;
Array 数组
PHP 中的数组实际上是一个有序映射。映射是一种把 values 关联到 keys 的类型。此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合,栈,队列以及更多可能性。
<?php
$array = array(
"foo" => "bar",
"bar" => "foo",
);
// 自 PHP 5.4 起
$array = [
"foo" => "bar",
"bar" => "foo",
];
key 可以是 integer 或者 string。value 可以是任意类型。可以不指定键名,或者对某些单元指定键名。
数组单元可以通过 array[key] 语法来访问。
<?php
$array = array(
"foo" => "bar",
42 => 24,
"multi" => array(
"dimensional" => array(
"array" => "foo"
)
)
);
var_dump($array["foo"]);
var_dump($array[42]);
var_dump($array["multi"]["dimensional"]["array"]);
Object 对象
要创建一个新的对象 object,使用 new 语句实例化一个类:
<?php
class foo
{
function do_foo()
{
echo "Doing foo.";
}
}
$bar = new foo;
$bar->do_foo();
接下来我们将看见如何使用变量与常量。你需要保存以下案例并尝试运行程序。
如何编写 PHP 程序
从今以后,保存和运行 PHP 程序的标准步骤如下:
对于 PhpStorm 用户
- 打开 PhpStorm。
- 以给定的文件名创建新文件。
- 输入案例中给出的代码。
- 右键并运行当前文件。
对于其他编辑器用户
- 打开你选择的编辑器。
- 输入案例中给出的代码。
- 以给定的文件名将其保存成文件。
- 在解释器中通过命令
php program.php
来运行程序。
案例:使用变量与常量
输入并运行以下程序:
<?php
# 文件名:var.py
$i = 5;
echo $i . "\n";
$i = $i + 1;
print $i . "\n";
$s = <<<EOT
This is a multi-line string.
This is the second line.
EOT;
print $s;
输出:
5
6
This is a multi-line string.
This is the second line.
它是如何工作的
下面是这一程序的工作原理。首先,我们使用赋值运算符(=
)将常量数值 5
赋值给变量 $i
。这一行被称之为声明语句(Statement)因为其工作正是声明一些在这一情况下应当完成的事情:我们将变量名 $i
与值 5
相连接。然后,我们通过 echo
语句来打印变量 $i
所声明的内容,这并不奇怪,只是将变量的值打印到屏幕上。这里我们同时打印了 \n
是为了换行。
接着,我们将 1
加到 $i
变量所存储的值中,并将得出的结果重新存储进这一变量。然后我们将这一变量打印出来,并期望得到的值应为 6
。
类似地,我们将文本赋值给变量 $s
,并将其打印出来。
针对静态编程语言程序员的提示
变量只需被赋予某一值。不需要声明或定义数据类型。
逻辑行与物理行
所谓物理行(Physical Line)是你在编写程序时你所看到的内容。所谓逻辑行(Logical Line)是 PHP 所看到 的单个语句。PHP 以 ;
作为不同逻辑行的结束与分隔。
PHP 鼓励每一行使用一句独立语句从而使得代码更加可读。
如果你有一行非常长的代码,你可以通过使用反斜杠将其拆分成多个物理行。
$s = 'This is a string. \
This continues the string.';
echo $s;
输出:
This is a string. This continues the string.
缩进
空白区在各行的开头,这被称作缩进(Indentation)。在逻辑行的开头留下空白区(使用空格或制表符)用以确定各逻辑行的缩进级别,而后者又可用于确定语句的分组。
这意味着放置在一起的语句拥有相同的缩进。每一组这样的语句被称为块(block)。
如何缩进
使用四个空格来缩进。好的编辑器会自动为你完成这一工作。请确保你在缩进中使用数量一致的空格。
总结
现在我们已经了解了诸多本质性的细节,我们可以前去了解控制流语句等更多更加有趣的东西。记得一定要充分理解你在本章所阅读的内容。
链接:https://blog.zhanxiaobai.com/2018/08/31/a-byte-of-php-04-basics/
网友评论