基本语法
输出语句
语句 | 功能 |
---|---|
echo |
输出字符串类型 |
print_r |
输出引用类型(对象,数组等) |
var_dunp |
检测变量类型 |
::: tip
echo
语句可用于给前端返回响应体。比如前端通过ajax
请求,可以在xhr.response
中直接得到echo
的内容
:::
变量&常量
👉🏼 变量
语句 | 功能 | 返回值 |
---|---|---|
isset() |
检测变量是否存在 | boolean |
unset() |
删除某个变量 | none |
👉🏼 常量
常量用const
或 define
定义,常量名一般全部大写,不受作用域的限制
::: tip
一般是define在类外定义常量,const在类内定义常量,并且const必须通过类名::变量名
来进行访问。但是php5.3以上支持类外通过const定义常量。
:::
:::danger
const
不能在条件语句中使用,必出错
:::
三元表达式及@使用
省略写法
echo $name?:'NO';//输出本身的话,可以省略!
??
的作用
①检测变量是否定义(isset
) ②检测变量是否为空(is_null
)
echo $name??'NO';//NO
@用来屏蔽错误
@(9/0)//不会报错
字符串相关函数
定界符
以<<<
开头,用相同字符串定义开头&结尾。
::: details
$temp=<<<tem
<h1 style="color: #e01">这是一段临时HTML模板</h1>
<h5 style="color: #00b3ff">hhc</h5>
<script>
document.querySelector("h5").addEventListener("mouseenter",function (){
this.style.color="#000";
})
</script>
tem;
:::
字符串连接
.
符号用来连接字符串
::: details
$str="fer.com";
echo $str."=>"."hhhhc";
:::
字符串长度
方法 | 参数 | 作用 |
---|---|---|
strlen() |
[$str] |
获得字符串长度,中文一个字两个字符! |
mb_strlen() |
[$str,encoding] |
指定编码格式获取长度,指定为utf8 ,中文一个字一个字符 |
字符串格式
方法 | 作用 |
---|---|
trim() |
去空格 |
strtoupper() &strtolower |
大小写转换 |
ucfirst() |
指定一段字符串首字母大写 |
ucwords($sentence,delimiters) |
以delimiters为分割,首字母大写 |
::: details
$sentence="my name is jqf.let's go shopping!";
echo "<hr>";
echo ucwords($sentence,'.');//My name is jqf.Let's go shopping!
:::
与数组相互转化
explode(delimiter,$str)
& implode(glue,$arr)
截取字符串
substr($str,start,len)
& mb_substr($str,start,len,encoding)
,返回截取的字符串,原字符串不会发生改变
md5加密
::: theorem MD5
MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。
::: right
来自百度百科
:::
引入模块
方法 | 说明 |
---|---|
include & include_once |
弱引用,如果引入的文件不存在则会warning (可以用@ 屏蔽掉),但后续代码仍然执行 |
require & require_once |
强引用,所引文件不存在则会报fatal mistake ,后续不再执行 |
::: tip
include_once
& require_once
用来避免引入多次某个模块而造成的错误,具体如下
:::
::: details
//tools.php
<?php
function show(){
return 'https://www.fintinger.xyz';
}
//1.php
<?php
include 'tools.php';
echo show();
//2.php
include_once "1.php";
include_once "tools.php";
2.php
中引入了两次tools.php
,通过include_once
可以避免产生错误
:::
函数相关
点语法
类似于javascript,可以在函数传参数的时候实现"聚合"的效果
::: details
<?php
function sum(...$nums){
print_r($nums);
echo "<hr>";
echo array_sum($nums);
}
sum(1,2,3,4,4,5,6,6,7,7,7,7);
:::
传址&传值
&
用来传址
严格模式
declare(strict_types=1);
声明严格模式,严格模式下,如果约束了函数参数的类型,传入不是约束的值,会报错。
declare(strict_types=1);
function sum(int ...$nums){
return array_sum($nums);
}
echo sum(1,2,3,4,'5');//Fatal error
php标准的函数
function show(int $var): string
{
return 'hhc';
}//参数(php>5)和返回值(php>7)都有明确的类型约束
好用的变量函数!
$action="fn";
function fn(){
//do something
}
$action()//即可调用fn函数
具体应用 :根据图片后缀设定对应处理函数
::: details
function png()
{
return 'png fn running...';
}
function jpg()
{
return 'ipg fn running...';
}
$file = 'logo.png';
$action = explode('.', $file)[1];
echo function_exists($action)
? $action()
: '无法处理这种格式的图片!';
:::
数组相关
指针读取数组
current($arr)
&next($arr)
操作数组指针,如果读取不到,current则为0
list()
list — 把数组中的值赋给一组变量。
$info = array('coffee', 'brown', 'caffeine');
// 列出所有变量
list($drink, $color, $power) = $info;
echo "$drink is $color and $power makes it special.\n";
::: tip
在 PHP 7.1.0 之前的版本,list() 仅能用于数字索引的数组,并假定数字索引从 0 开始。
:::
也就是说 PHP>7.1.0,list可以用来解构key=>value
型数组了
::: details
$arr=[
"age"=>"18",
"name"=>"fin",
];
list("name"=>$name,"age"=>$age)=$arr;
echo $name;//fin
关于PHP中类似于ES6的对象解构赋值操作,有种更加稳妥方便的方式,那就是extract()
$arr=[
"age"=>"18",
"name"=>"fin",
];
extract($arr, EXTR_PREFIX_SAME, "wddx");//重复则覆盖,前缀为"wddx"
echo $name;//fin
:::
::: warning
PHP 5 里,list() 从最右边的参数开始赋值; PHP 7 里,list() 从最左边的参数开始赋值。
如果你用单纯的变量,不用担心这一点。 但是如果你用了具有索引的数组,通常你期望得到的结果和在 list() 中写的一样是从左到右的,但在 PHP 5 里实际上不是, 它是以相反顺序赋值的。
通常而言,不建议依赖于操作的顺序,在未来可能会再次发生修改。
:::
操作数组
foreach()
遍历数组
foreach($arr $index=>$item){
//可以获取索引和数组中的item
}
传址修改原数组
foreach ($arr as &$item){
//do something(修改传址进来的数组元素)
}
数组增删操作
增 | 删 | |
---|---|---|
从末尾 | array_push |
array_pop |
从开始位置 | array_unshift |
array_shift |
其他方法(类似JS中)
/*遍历*/
array_map()
array_values()
array_keys()
array_filter()
/*判断*/
array_key_exists()
in_array()
/*合并*/
array_merge()//[originArr,newArr]
array_change_key_case() //修改key的大小写小:0/CASE_LOWER 大:1/CASE_UPPER
::: details
//递归实现多维数组key的大小写转换
<?php
$config = [
"hOst" => "localhost",
"POST" => 8000,
"uSeR" => "admin",
"cache" => [
"hOst" => "127.0.0.1",
"user" =>