1. ./configure --help 命令了解 PHP 所有可用的编译选项及简短解释
2.heredoc
3.PHP_EOL 换行
4.array:key 可以是 integer 或者 string。value 可以是任意类型
5.var_dump,echo,print_r 都是输出的意思
$juices = array("apple", "orange", "koolaid1" => "purple");
var_dump($juices["koolaid1"]);
print_r($juices["koolaid1"]);
echo $juices[1].PHP_EOL;echo $juices[1];echo $juices[1];
<pre name="code" class="php">echo "=======";echo $juices;echo "======".PHP_EOL;
var_dump($juices);
print_r($juices);
输出结果:
string(6) "purple"purpleorangeorangeorange=======Array======array(3) { [0]=> string(5) "apple" [1]=> string(6) "orange" ["koolaid1"]=> string(6) "purple"}Array( [0] => apple [1] => orange [koolaid1] => purple)
可见(1)var_dump可以自动换行,print_r不可以,echo不可以;(2)echo可以在后面添加.PHP_EOL表示换行;(3)echo不可以输出数组
6.global
PHP 的全局变量和 C 语言有一点点不同,在 C 语言中,全局变量在函数中自动生效,除非被局部变量覆盖。这可能引起一些问题,有些人可能不小心就改变了一个全局变量。PHP 中全局变量在函数中使用时必须声明为 global。
<?php
$a = "123";
$b = "456";
function func1()
{
global $b;
echo $a;
echo $b;
}
func1();
输出结果:
456
7.static
变量 $a 仅在第一次调用 test() 函数时被初始化,之后每次调用 test() 函数都会输出 $a 的值并加一
function Test()
{
static $a = 0;
echo $a;
$a++;
}
test();
test();
test();
test();
test();
test();
输出结果:012345
8.常量
define('MIN_VALUE', '0.0'); //Works OUTSIDE of a class definition.
define('MAX_VALUE', '1.0'); //Works OUTSIDE of a class definition.
const MIN_VALUE = 0.0; //Works INSIDE of a class definition.
const MAX_VALUE = 1.0; //Works INSIDE of a class definition.
9. 反引号 ``
注意这不是单引号!PHP 将尝试将反引号中的内容作为外壳命令来执行,并将其输出信息返回(即,可以赋给一个变量而不是简单地丢弃到标准输出)
10.字符串运算符
$a = "Hello ";
$b = $a . "World!"; // now $b contains "Hello World!"
$a = "Hello ";
$a .= "World!"; // now $a contains "Hello World!"
echo $a;
echo $b;
11. 自动生成注释:/ + ** +空格
12. 流程控制的代替语法::+end,如
<?php
if ($a == 5):
echo "a equals 5";
echo "...";
elseif ($a == 6):
echo "a equals 6";
echo "!!!";
else:
echo "a is neither 5 nor 6";
endif;
?>
13. 在for循环中 for($i = 0; $i < sizeof($people); ++$i) 的效率低于for($i = 0, $size = sizeof($people); $i < $size; ++$i)
14. foreach遍历数组
foreach (array_expression as $value)
statement
foreach (array_expression as $key => $value)
statement
15. continue 接受一个可选的数字参数来决定跳过几重循环到循环结尾。默认值是 1,即跳到当前循环末尾
16. require 和 include 几乎完全一样,除了处理失败的方式不同之外。require 在出错时产生 E_COMPILE_ERROR 级别的错误。换句话说将导致脚本中止而 include 只产生警告(E_WARNING),脚本会继续运行
17. require_once 语句和 require 语句完全相同,唯一区别是 PHP 会检查该文件是否已经被包含过,如果是则不会再次包含
18. 如果省略了 return,则返回值为 NULL
19. $this 是访问非静态属性及方法。:: 是访问静态属性及方法和类常量
20. 可以把在类中始终保持不变的值定义为常量。在定义和使用常量的时候不需要使用 $ 符号
const constant = 'constant value';
echo self::constant . "\n";
21. 构造函数__construct,自 PHP 5.3.3 起,在命名空间中,与类名同名的方法不再作为构造函数
22. 任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现
23. PHP 将所有以 __(两个下划线)开头的类方法保留为魔术方法
24. PHP 5 新增了一个 final 关键字。如果父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承
25. == 和 ===:当使用比较运算符(==)比较两个对象变量时,比较的原则是:如果两个对象的属性和属性值 都相等,而且两个对象是同一个类的实例,那么这两个对象变量相等。
而如果使用全等运算符(===),这两个对象变量一定要指向某个类的同一个实例(即同一个对象)
26. 在声明命名空间之前唯一合法的代码是用于定义源文件编码方式的 declare 语句。另外,所有非 PHP 代码包括空白符都不能出现在命名空间的声明之前
27.截取字符串
$shortCode = end(explode('/', “ffff/12333/4556/44566”)); //这样的结果是取出 “44566”