1,php标记:<?php 和 ?>
当解析一个文件时,PHP 会寻找起始和结束标记,也就是 <?php 和 ?>
,这告诉 PHP 开始和停止解析二者之间的代码。此种解析方式使得 PHP 可以被嵌入到各种不同的文档中去,而任何起始和结束标记之外的部分都会被 PHP 解析器忽略。
PHP 也允许使用短标记 <? 和 ?>
,但不鼓励使用。只有通过激活 php.ini 中的 short_open_tag 配置指令或者在编译 PHP 时使用了配置选项 –enable-short-tags 时才能使用短标记。
从 HTML 中分离
<?php if ($expression == true): ?>
This will show if the expression is true.
<?php else: ?>
Otherwise this will show.
<?php endif; ?>
PHP 变量
与代数类似,可以给 PHP 变量赋予某个值(x=5)或者表达式(z=x+y)。
变量可以是很短的名称(如 x 和 y)或者更具描述性的名称(如 age、carname、totalvolume)。
PHP 变量规则:
变量以 $ 符号开始,后面跟着变量的名称
变量名必须以字母或者下划线字符开始
变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )
变量名不能包含空格
变量名是区分大小写的($y 和 $Y 是两个不同的变量)
备注: ASCII 字符从 127 到 255(0x7f-0xff)也是可以的。
$this 是一个特殊的变量,它不能被赋值。
变量默认总是传值赋值
引用赋值:使用引用赋值,简单地将一个 & 符号加到将要赋值的变量前(源变量)
<?php
$foo = 'Bob'; // 将 'Bob' 赋给 $foo
$bar = &$foo; // 通过 $bar 引用 $foo 代表是同一个对象
$bar = "My name is $bar"; // 修改 $bar 变量
echo $bar;
echo $foo; // $foo 的值也被修改
?>
global 关键字
在方法中使用使用全局变量需要用global进行声明。
<?php $a = 1; $b = 2; function Sum() { global $a, $b; $b = $a + $b; } Sum(); echo $b; ?>
或者用通过 $GLOBALS 替代 global
GLOBALS是一个超全局变量, GLOBALS 是一个关联数组,每一个变量为一个元素,键名对应变量名,值对应变量的内容。
<?php $a = 1; $b = 2; function Sum() { $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b']; } Sum(); echo $b; ?>
使用静态变量,在方法内部使用静态变量
<?php function test() { static $a = 0; echo $a; $a++; } ?>
现在,变量 $a 仅在第一次调用 test() 函数时被初始化,之后每次调用 test() 函数都会输出 $a 的值并加一。
常量
常量和变量有如下不同:
常量前面没有美元符号($);
常量只能用 define() 函数定义,而不能通过赋值语句;
常量可以不用理会变量的作用域而在任何地方定义和访问;
常量一旦定义就不能被重新定义或者取消定义;
常量的值只能是标量。
1,可以用 define() 函数来定义常量
// 合法的常量名
define("FOO", "something");
define("FOO2", "something else");
define("FOO_BAR", "something more");
echo FOO;// 输出something
2,使用关键字 const 定义常量
<?php // 以下代码在 PHP 5.3.0 后可以正常工作 const CONSTANT = 'Hello World'; echo CONSTANT; ?>
类型
PHP 支持 8 种原始数据类型。
四种标量类型:
boolean(布尔型)
integer(整型)
float(浮点型,也称作 double)
string(字符串)
两种复合类型:
array(数组)
object(对象)
最后是两种特殊类型:
resource(资源)
NULL(无类型)
为了确保代码的易读性,本手册还介绍了一些伪类型:
mixed(混合类型)
number(数字类型)
callback(回调类型)
以及伪变量 $…。
可能还会读到一些关于“双精度(double)”类型的参考。实际上 double 和 float 是相同的,由于一些历史的原因,这两个名称同时存在。
变量的类型通常不是由程序员设定的,确切地说,是由 PHP 根据该变量使用的上下文在运行时决定的。
赋值运算符
基本的赋值运算符是“=”
引用赋值,使用“$var = &$othervar;”语法。
<?php
基本赋值
$a = ($b = 4) + 5; // $a 现在成了 9,而 $b 成了 4。
引用赋值
$a = 3;
$b = &$a; // $b 是 $a 的引用
print "$a\n"; // 输出 3
print "$b\n"; // 输出 3
$a = 4; // 修改 $a
print "$a\n"; // 输出 4
print "$b\n"; // 也输出 4,因为 $b 是 $a 的引用,因此也被改变
?>
注意:
自 PHP 5 起,new 运算符自动返回一个引用,因此再对 new 的结果进行引用赋值在 PHP 5.3 以及以后版本中会发出一条 E_DEPRECATED 错误信息,在之前版本会发出一条 E_STRICT 错误信息。
比较运算符
$a <> $b 不等
TRUE,如果类型转换后 $a 不等于 $b。
$a <=> $b 结合比较运算符
当$a小于、等于、大于than $b时 分别返回一个小于、等于、大于0的integer 值。 PHP7开始提供.
$a ?? $b ?? $c NULL 合并操作符
从左往右第一个存在且不为 NULL 的操作数。如果都没有定义且不为 NULL,则返回 NULL。PHP7开始提供。
错误控制运算符
PHP 支持一个错误控制运算符:@。当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。
<?php
/* Intentional file error */
$my_file = @file ('non_existent_file') or
die ("Failed opening file: error was '$php_errormsg'");
// this works for any expression, not just functions:
$value = @$cache[$key];
// will not issue a notice if the index $key doesn't exist. ?>
执行运算符
PHP 支持一个执行运算符:反引号(``)。注意这不是单引号!PHP 将尝试将反引号中的内容作为 shell 命令来执行,并将其输出信息返回(即,可以赋给一个变量而不是简单地丢弃到标准输出)。使用反引号运算符“`”的效果与函数 shell_exec() 相同
<?php $output = `ls -al`; echo "<pre>$output</pre>"; ?>
字符串运算符
有两个字符串(string)运算符。第一个是连接运算符(“.”),它返回其左右参数连接后的字符串。第二个是连接赋值运算符(“.=”),它将右边参数附加到左边的参数之后。
<?php
$a = "Hello ";
$b = $a . "World!"; // now $b contains "Hello World!"
$a = "Hello ";
$a .= "World!"; // now $a contains "Hello World!"
?>
数组运算符
例子 | 名称 | 结果 |
---|---|---|
$a + $b |
联合 | $a 和 $b 的联合。 |
$a == $b |
相等 | 如果 $a 和 $b 具有相同的键/值对则为 TRUE。 |
$a === $b |
全等 | 如果 $a 和 $b 具有相同的键/值对并且顺序和类型都相同则为 TRUE。 |
$a != $b |
不等 | 如果 $a 不等于 $b 则为 TRUE。 |
$a <> $b |
不等 | 如果 $a 不等于 $b 则为 TRUE。 |
$a !== $b |
不全等 | 如果 $a 不全等于 $b 则为 TRUE。 |
+ 运算符把右边的数组元素附加到左边的数组后面,两个数组中都有的键名,则只用左边数组中的,右边的被忽略。
<?php
$a = array("a" => "apple", "b" => "banana");
$b = array("a" => "pear", "b" => "strawberry", "c" => "cherry");
$c = $a + $b; // Union of $a and $b
echo "Union of \$a and \$b: \n";
var_dump($c);
$c = $b + $a; // Union of $b and $a
echo "Union of \$b and \$a: \n";
var_dump($c);
$a += $b; // Union of $a += $b is $a and $b
echo "Union of \$a += \$b: \n";
var_dump($a);
?>
类型运算符
instanceof 用于确定一个 PHP 变量是否属于某一类 class 的实例:
<?php
class MyClass {
}
class NotMyClass {
}
$a = new MyClass;
var_dump($a instanceof MyClass);
var_dump($a instanceof NotMyClass);
?>