目录
- 1 php介绍
- 2 php标记
- 3 常量 #define #const
- 4 变量 $
- 5 数据类型 #类型
- 6 流程控制 if-else
- 7 循环结构
- 8 函数 #function
- 9 类,对象 object #class #oop
- 10 异常处理 #Exception
1 php介绍
2 php标记
2.1 语句分隔符
2.2 注释
3 常量 #define #const
规范:常量名用大写表示,如
const HELLO = null
3.1 const 和 define的区别
3.2 魔术常量 #todo
php内有8个魔术常量,常量值会随着它们在代码中的位置改变而改变
4 变量 $
在php中,变量不用初始化也可以直接使用,默认值为空值null
4.1 赋值
4.2 引用&,变量本体
4.3 可变变量
4.4 #作用域
4.5 全局变量,局部变量
4.6 输出语句 #echo #print
echo
和
4.6.1 echo简写
4.6.2 格式化输出 #printf
4.6.3 #var_dump
4.7 html代码块 #EOF
4.8 变量销毁 #unset #isset
使用isset可以判断变量有没有初始化
使用empty()可以判断空值,但不能判断变量有没有初始化
isset()
可以判断变量值是否为null,true表示非空,false表示为空值
5 数据类型 #类型
5.1 #null 空值 #isset #is_null
在松散比较中
==
,null
等价于0
、""
、false
false无输出,等价于空串''
,true松散等价为非0值
变量没有初始化,则默认值为null
is_null(), isset()
可以判断变量值是否为null,true表示非空,false表示为空值
如果变量设置为null,也相当于not set
5.2 字串 string
默认非数字的都是字串
5.2.1 遍历字符串分隔符数组 #explode
返回值:字符串数组
<?php
$merge_bid = "97361,97382,97361,97382";
foreach (explode(',', $merge_bid) as $temp) {
$a[]=$temp;
}
echo $a;
5.2.2 过滤两端空格 #trim #ltrim #rtrim
5.2.3 unicode 特殊字符
5.3 整型
5.4 布尔型 boolean
false无输出,等价于空串
''
,true松散等价为非0值
echo false; 无输出
echo true; 输出1
5.5 浮点型 float
5.6 变长数组 #array
遍历数组:
5.6.1 关联数组
类似map结构,关联数组可以自定义key,而一般数组的key从下标0开始
遍历关联数组:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MBSrCdi8-1661788270224)(https://cloudimg001.oss-cn-shenzhen.aliyuncs.com/imapostge/20220726151825.png)]
5.6.2 添加元素
5.6.3 获取数组的size #count
5.6.4 数组排序 #sort #asort #ksort #rsort
5.6.5 绑定数组一起排序 #array_multisort #sort
可以只对一个数组排序,也可以绑定其他数组的元素位置一起参与排序
5.6.6 取出二维数组中的列值 #array_column
5.6.7 合并多个数组 #array_merge
如果索引是字串,则相同的索引名,后面的会覆盖前面的
如果索引是数字(默认值),则索引会重新建立,形成连续的索引
$arr = [
0 => [
'hello' => 1,
'cat' => 2,
'cat3' => 3,
'cat4' => 4,
'cat5' => 5,
],
1 => [
'hello' => 1,
'cat' => 2,
'cat3' => 3,
'cat4' => 4,
'cat5' => 5,
],
2 => [
'hello' => 1,
'cat' => 2,
'cat3' => 3,
'cat4' => 4,
'cat5' => 5,
],
3 => [
'hello' => 1,
'cat' => 2,
'cat3' => 3,
'cat4' => 4,
'cat5' => 5,
],
4 => [
'hello' => 1,
'cat' => 2,
'cat3' => 3,
'cat4' => 4,
'cat5' => 55555,
],
];
$a = array_merge($arr, $arr, $arr);
5.6.8 取数组部分片段 #array_slice
5.7 超全局变量 #全局变量 #关联数组
超级全局变量,是php自带的关联数组
5.7.1 #GLOBALS 获取所有全局变量 #todo
在使用时,可以认为$GLOBALS和global效果相同
5.7.2 获取请求参数 #REQUEST #POST #GET #请求参数 #todo
5.7.3 #SERVER
5.8 运算符
php中没有逗号表达式
5.8.1 算术运算符
5.8.2 比较运算符
5.8.3 逻辑运算符
5.8.4 三目运算符
6 流程控制 if-else
- 写法一
如果只有一个语句,可以省略{}
- 写法二:if,endif
<?php
if($t==absc):
echo hello;
elseif($t==abs):
echo yes;
else:
echo "<h1>helloC</h1>";
endif;
?>
<?php if($t==absc):?>
<?=hello;?>
<?php elseif($t==abs):?>
<h1>yes</h1>
<?php else:?>
<h1>helloC</h1>
<?php endif;?>
6.1 #switch 结构
7 循环结构
7.1 #while
7.2 #for
7.3 #foreach
8 函数 #function
函数没有重载(一个函数名只能被声明一次)
8.1 参数
8.1.1 可选参数:给参数设置默认值
8.1.2 引用参数
8.2 匿名函数
8.3 返回值
8.4 在函数内使用全局变量 #global #GLOBALS
全局变量是指声明在函数外的变量,函数内无法访问,其他位置可以访
常量可以在任意位置使用
在使用时,可以认为$GLOBALS和global效果相同
8.5 函数内的静态变量 #static
调用同名函数时,内部定义的静态变量值可以延续使用(调用后,变量不会被销毁,会在内存中被缓存)
8.6 导入外部文件 #require
$db01 = require(__DIR__ . '/../../config/db01.php');
9 类,对象 object #class #oop
类名不分
大小写
9.1 构造方法,析构方法 #construct #destruct #todo
9.2 继承 #extends
9.2.1 #重写 #override
9.2.1.1 #final 定义不能被重写的方法
9.2.2 实现接口 #interface #implements
9.2.3 抽象类 #abstract
和java的概念一致
9.2.4 子类调用父类的内容
9.3 修饰符
9.3.1 访问控制符 #public #private #protected
public可以在任意位置访问
protected访问需要继承关系
private只能在当前类内部访问
<?php
class MyClass
{
public $public = 'Public';
protected $protected = 'Protected';
private $private = 'Private';
function printHello()
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}
$obj = new MyClass();
echo $obj->public; // 这行能被正常执行
//echo $obj->protected; // 报错
echo '<br>';
$obj->printHello(); // 输出 Public、Protected 和 Private
echo '<br>';
class MyClass2 extends MyClass
{
protected $cur = pri;
function printHello()
{
echo $this->public; // 继承自MyClass
echo $this->protected; // 继承自MyClass
echo $this->cur; //当前类
}
}
$obj2 = new MyClass2();
echo $obj->public; // 这行能被正常执行
//echo $obj->protected; // 报错
echo '<br>';
$obj2->printHello();
echo '<br>';
9.3.2 类常量 #const
类内部无法使用define定义常量,只能用const定义常量
9.3.3 #static 静态变量
9.3.4 范围解析操作符 #parent #self #static
9.3.4.1 例子:self
9.3.5 $this->
, $obj->
#this
如果需要调用静态变量、常量,需要用到
范围解析操作符::