学习PHP

PHP可在不同的平台上运行,与目前几乎所有的正在被使用的服务器相兼容,他还提供了广泛的数据库支持。在学习web的道路上PHP是必不可少的工具。
PHP文件可包含文本、HTML、JavaScript文件和PHP代码。PHP代码在服务器上执行,结果以纯HTML的形式返回给浏览器。

PHP语法

PHP脚本以<?php开始,以?>结束;//用于单行注释,/**/用于段落注释。

PHP变量

PHP中变量以$开始,变量名只能以字母或下划线开始,变量名区分大小写。
PHP中没有声明变量的命令,变量在第一次赋值时被创建。
PHP有四种不同的作用域:local、global、static、parameter。与其他语言有所不同的是,函数内无法调用函数外部的全局变量,若要在函数内部调用全局变量,需要使用global关键字,如global $x,$y;
PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中,index为变量名称,这个数组可以在函数内部访问,即可在函数内部通过$GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];调用全局变量。

PHP关键字

echo:可用于输出一个或多个字符串。
print:只可用于输出一个字符串。
PHP定界符EOF可按照原样输出其内容,且不需要转义符,以<<<EOF开始,EOF;顶格独占一行结尾(其后不能再跟任何字符)。

PHP数据类型

字符串:可用单引号,也可用双引号引用。并置运算符.可以将两边字符串连接起来。strpos(string 待查字符串,string 查找字符串)可以查找字符串中是否包含特定字符串片段并返回一个布尔值。
整型:有三种表示方法,十进制、十六进制(0x前缀)、八进制(0前缀)。
数组:通过array()为变量赋值,var_dump()可以返回变量类型及变量值。
PHP还有浮点型、布尔型、对象、NULL值和资源类型。资源resource类型是一种特殊类型,保存了到外部资源的引用,通过get_resource_type()可以返回资源类型。

PHP类型比较

==只进行等式两边值的比较,===不仅会对值进行比较,还会对等式两边数据类型进行比较。

PHP常量

常量一旦被定义就不可改变且作用域全局(无需使用global关键字),PHP中常量可以用define()const关键字定义。常量名前不需要使用$符号。

PHP运算符

除了以前学过的加减乘除等运算符外,PHP中还有~符号可用于二进制取反。除a.=b即a=a.b并置运算符外,其余赋值运算符与以往所学过的赋值运算符相同。
PHP的比较运算符如下图所示
PHP比较运算符
与以往所学逻辑运算符相比,PHP中xor表示异或。
PHP中还有一种以往从未见过的运算符,组合比较符<=>,其语法格式如下:
$c = $a <=> $b;
$a>$b,则$c的值为1;
$a==$b,则$c的值为0;
$a<$b,则$c的值为-1;
PHP运算符优先级如下图:
PHP运算符优先级
PHP的if…else语句、switch语句和数组与其他语言相同,在此详细不写入笔记了。count()可用于输出数组长度,PHP中的关联数组可用于存储键值对,两种创建方法如下:
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");

1
2
3
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";

通过调用foreach()可以遍历关联数组,方法如下:

1
2
3
4
5
6
7
8
<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
foreach($age as $x=>$x_value)
{
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
?>

PHP数组排序

sort() - 对数组进行升序排列
rsort() - 对数组进行降序排列
asort() - 根据关联数组的值,对数组进行升序排列
ksort() - 根据关联数组的键,对数组进行升序排列
arsort() - 根据关联数组的值,对数组进行降序排列
krsort() - 根据关联数组的键,对数组进行降序排列

PHP函数

PHP中的变量函数可以将变量作为函数名来调用函数,此方法对对象同样有效。

PHP魔术变量

PHP运行时预定义了许多的常量,这些常量有的随着他们在代码中的位置而改变。
__LINE__:文件中的当前行号
__FILE__:文件的完整路径和本文件名
__DIR__:文件所在路径(不包含文件名)
__FUNCTION____METHOD__:当前函数名
__CLASS__:当前类名
__TRAIT__:trait的名字
__NAMESPACE:当前命名空间