基本语法
以<?php
作为开头
每句话以 ;
结尾?>
作为结尾
注释
//
单行注释/** */
多行注释
传值与传址
$a=$b
传值,指向不同的内存空间$a=&$b
传址,指向相同的内存空间,同时改变
局部变量,全局变量与超全局变量
全局声明(函数外声明)的变量会保存在$-GLOBALS
中,函数内默认不能访问全局变量,访问需要加上global关键字
也可以使用全局数组$GLOBALS('变量名')
调用全局变量
超全局变量
菜鸟教程全局变量
局部变量:函数内部声明的变量,只能在函数内部使用
变量检测和变量删除
isset()
检测unset()
删除,在函数中用global引入的全局变量无法删除
static关键字
延长生命周期(好像和c语言一样)
字符串界定符
作用就是按照原样,包括换行格式什么的,输出在其内部的东西,任何特殊字符都不需要转义
$str =<<<EOF
EOF;
strlen()和mb_strlen()
strlen()
用于计算字符串长度mb_strlen(变量名,'编码形式(utf8)')
宽字节计算长度
PHP类型比较
php是弱类型语音,经常要对变量进行比较;
松散比较:使用两个==
,只比较值
严格比较:使用三个===
,既比较值,也比较类型
常量
常量被定义后,在脚本其他任何地方不能被改变,常量是全局的,函数内也可以直接使用
- 使用define(“名称”,”常量的值”,是否区分大小写)
例如define("GREE","欢迎欢迎",ture)
//常量名前面不能加$ - 使用const 名称=常量的值
例如const NAME='哈哈哈
//常量一般情况下用大写字母
并置运算符
使两个字符串相加
例如 "hello"."world"
strpos()函数
用于在字符串内找一个指定的字符或文本,如果找到匹配则返回第一个匹配(第一个字符要从0开始算)的字符位置,否则返回FALSE
例如
1 |
|
输出 6
逻辑运算符
与 | 或 | 异或 | 非 |
---|---|---|---|
and && | or || | xor | ! |
异或:有且仅有一个为true,则返回true
非:如果为假则返回真
组合比较符(太空船)
$c = $a <=> $b;
如果 $a > $b, 则 $c 的值为 1。
如果 $a == $b, 则 $c 的值为 0。
如果 $a < $b, 则 $c 的值为 -1。
c语言的strcmp()函数
数组
数组创建
$arr=array();
$arr=[];
多维数组
- 多维数组创建
$arr=[
[];
]; - 多维数组的调用
$arr[0][1] //可以索引数组和关联数组相结合
关联数组
分配给数组指定的键值对,以下两种创建方式是相同的$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
1 | $age['Peter']="35"; |
与数组有关的函数(方法)
key($arr);
返回数组的键值(下标)current($arr)
返回数组的值next($arr)
使数组指针下移,返回下移后的数组的值,最后返回FALSEprev($arr)
使数组指针上移,返回下移后的数组的值,最后返回FALSEcount($arr)
计算数组长度(元素数量)list($a,$b)=&arr
将数组第一个值付给$a,第二个值付给$b,以此类推,加上循环可以遍历数组
数组排列
sort() - 对数组进行 升序 排列
rsort() - 对数组进行 降序 排列
asort() - 根据关联数组的 值, 对数组进行 升序 排列
ksort() - 根据关联数组的 键,对数组进行 升序 排列
arsort() - 根据关联数组的 值,对数组进行 降序 排列
krsort() - 根据关联数组的 键,对数组进行 降序 排列
r是降序,k是键,a是值
运行实例
1 |
|
结果 Array( [0] => BMW [1] => Toyota [2] => Volvo )
自动标出键值对
循环
php语言的for循环,while循环和c语言中的循环没有区别,这里不过多介绍
主要介绍运行foreach循环
foreach用于遍历数组,有以下两种形式
foreach($array as $value)
{
要执行代码; //每进行一次循环,当前数组元素的值就会被赋值给 $value
}
foreach($array as $key=> &value)
{
要执行代码; //每一次循环,当前数组元素的键与值就都会被赋值给 $key 和 $value 变量
}
例如
1 |
|
结果
aa=>1
bb=>2
cc=>3
函数
- php函数用
function
关键字 - 函数可以传参,可以传址,如果参数个数不确定的情况下可以用点语法
例如function sum(...$var){}
//注意$var是个数组 - 参数可以设定默认值
例如function sum($var=100){}
//没有传递参数时使用默认值 - 参数可以强制类型
例如function sum(int $var){}
//在函数前面加上declare(strict_types=1);变成严格模式,字符与整形也不能互传 - 函数返回值约束
例如function sum(int $var): string
//返回类型前加上问号,代表返回值可有可无 - 函数的特殊用法:变量函数
函数在调用时的函数名可以是一个变量
例如:&name="fun"; function fun(){}; $name();
根据函数名的变化调用不同的函数
魔术常量
PHP 向它运行的任何脚本提供了大量的预定义常量。
定义:有八个魔术常量的值是随着在代码中的位置而改变
__LIEN__
__FILE__
__DIR__
__FUNCTION__
__CLASS__
__TRAIL__
__METHOD__
__NAMESPACE__
__LINE__
文件中LINE所在的行号__FILE__
文件完整的路径和文件名__DIR__
文件所在的目录(也就是FILE减去文件名==dirname(__FILE__)
)__FUNCTION__
函数名称(当然得写在函数里)__CLASS__
类的名称,php5起返回类被定义时候的名称(区分大小写)__TRAIT__
trait的名字__METHOD__
类的方法名,返回该方法被定义时的名称__NAMESPACE__
当前命名空间的名称
命名空间
语法:namespace 空间名;
每一个命名空间类似于一个文件夹,函数类似于文件,同一个文件夹不能有相同命名的文件,所以需要使用命名空间,使用命名空间的函数时,用NAMESPACE\函数名
的格式调用