他们的区别:
1.定义形式不同
2.使用形式不同(常量不需要 $ 符号)
3.可变程度不同(常量的值不可改变或者销毁)
4.作用范围不同(常量具有超全局作用域(函数内外都可直接使用))
变量:变量是用于存储信息的容器(区分大小写,函数不区分大小写)
<?php
// 变量以$符开始。后面跟着变量的名称//
// 变量名必须以字母或者下划线开始//
//变量名不能包含空格//
//变量名只能包含字母数字以及下划线//
$name = 'petercai';
echo $name;
?>
常量:常量值被定以后,在脚本的其他任何地方都不能被改变
<?php
//关键词
const APP_PATH ='/phpstudy_pro';
// 函数创建
print_r(get_defined_constants(true)['user']);
class user
{
//常量
const NATION = 'CHINA';
}
echo User::NATION;
//常量钱不允许有$符
//常量在脚本的其他任何地方都不能被改变
?>
变量过滤器:变量的检查器
过滤函数:FILTER_VALIDATE_INT:验证整数
过滤单个变量:filter_var()
<?php
//过滤单个变量:filter_var()
//FILTER_VALIDATE_INT:验证整数
$int = 40;
var_dump(filter_var($int, FILTER_VALIDATE_INT));
?>
过滤多个变量:filter_var_array()
<?php
//过滤多个变量:filter_var_array()
//FILTER_VALIDATE_INT:验证整数
$x = 10;
$y = 20;
var_dump(filter_var_array([$x, $y], FILTER_VALIDATE_INT));
?>
1.自定义函数:
用户自定义的函数声明以单词 “function” 开头
函数名能够以字母或下划线开头
函数名应该能够反映函数所执行的任务
function getPrice(float $money, float $discount) : float
{
//被执行的代码
return $money * $discount;
}
echo '实付金额:' , getPrice(5000, 0.6), '元';
2.系统函数:
1.系统函数也叫内置函数,由系统事先声明好的
2.系统函数不需要我们去声明的,我们只需要调用就可以了
$str = '认真学习php';
echo mb_substr($str, 0, 2);
3.可变函数:
可变函数就是将函数的名称放在一个变量中进行引用
function getPrice(float $money, float $discount) : float
{
// 被执行的代码
return $money * $discount;
}
// 将函数的名称放在一个变量中进行引用
$funcName = 'getPrice';
echo '实付金额:' , $funcName(9000, 0.6), '元';
4.匿名函数:
匿名函数就是将一个没有名称的函数作为值付给变量,然后通过变量进行调用.
$getprice = function(float $money, float $discount) : float{
return $money * $discount;
};
echo '实付金额:' , $getprice(5000, 0.6), '元';
1.单值返回:
function sum($a, $b)
{
return $a . ' + ' . $b . ' = ' . ($a + $b);
}
echo sum(40, 60);
2.通过字符串拼接返回多值:
function demo(): string
{
$status = '链接';
$message = '成功';
return $status . ',<span style="color:red">' . $message. '</span>' ;
}
echo demo();
3.通过数组返回多值:
function demo1(): array
{
$status = '链接';
$message = '成功';
return ['status'=>$status, 'message'=>$message];
}
echo print_r(demo1(),true);
4.通过jsons格式化字符串返回多值:
function zhi(): string
{
$status = '链接';
$message = '成功';
return json_encode(['status'=>$status, 'message'=>$message]);
}
echo zhi();
5.将返回值序列化成字符串返回多值:
serialize:将一个数据序列化
echo serialize("你好");
1.值参数:
在函数中对参数的改变并不会映射到外部的参数
function jia(float $age) : float
{
return $age * 2;
}
$vae = 100;
echo jia($vae);
2.引用参数:
1.在参数前添加取地址符:&
2.在函数中对参数的改变会映射到外部的参数
function jia1(float &$age) : float
{
return $age *= 2;
}
$vae = 100;
echo jia1($vae), '<br>';
echo $vae;
3.剩余参数:
…rest:剩余参数
function jia2(...$args)
{
return array_sum($args);
}
echo jia2(3,2,5,10);
1.call_user_func:来执行
2.回调函数是异步执行的重要工具
function call($a, $b, $c)
{
return $a + $b + $c;
}
echo call_user_func('call', 2,2,3);
1.常量有命名空间,函数也有命名空间
2.在php中不允许在同一个命名空间中声明同名函数,而js就可以
3.namespace: 命名空间
namespace ns1;
function name()
{
return __function__;
}
echo name();
1.单引号:
单引号的两重意义:
1.本义就是字符
2.字符串的定界符
单引号中的变量不能被解析出来
单引号中的特殊字符不能被解析的
如果想把单引号中的变量解析出来可以通过字符串与变量的拼接来解析变量
$str = 'found';
echo 'This is a $str hello, <hr>';
// 如果想把单引号中的变量解析出来可以通过字符串与变量的拼接来解析变量
echo 'This is a '.$str.' hello, <hr>';
2.双引号:
双引号中的变量能够被解析出来
双引号中的特殊字符能够被解析的
$str = 'found';
echo "This is a $str hello";
3.heredoc:
1.heredoc:<<<符号 不用加双引号
2.可以解析变量,且双引号不需要转义
3.非常适合php和html写模板
$hello = 'teacher';
echo <<< HELLO
hello <span style="color:#ccc">$hello</span>
HELLO;
4.nowdoc:
1.nowdoc:的起始标签必须添加单引号
2.适合大段的纯文本
3.不适合内嵌变量或特殊的文本
echo 'This is test';
echo <<< 'zhi'
This is test<hr>This is test<hr>This is test<hr>
zhi;