1.0 php 服务器脚本语言,适合开发web,实现功能,开源免费,可执行在各种平台支持所有的数据库
2.0 php是用来写动态网站的。
3.0 3wHp
what :学习的是什么东西
why:为什么要学习它
when:学完之后什么时候用
how:怎么用,灵活运用
practice:实践,实践,实践
4.0 如果文档中只有php代码就不需要结束的标记
如果有其他代码一定要有结束标记
标准语法<?php ?>
5.0 语法规范每一行都要用; 结束
6.0 parse error 语法错误
7.0 单行注释//
多行注释/**/
跟js是一样的,并且在源代码中看不到的
8.0 php的工作原理
8.5 在浏览器打开一个url都发生了什么?
1.0 发送了一个请求
1.2 dns服务器,将域名转换为ip地址,找到相应的服务器。
2.0 httpresponse相应一个结果,如果请求存在,和不存在,不存在就给你一个不存在的结果
3.0 根据你的请求类型,如果apache服务器能处理的了,就通过http的response返回给浏览器,如果处理不了,比如php文件,那接下里就交给php引擎处理,处理之后再通过http response响应给浏览器,
4.0 如果有数据库,php引擎就要去操作数据库
9.0 php中的变量
声明变量 $+名称
$age = 15;
可以声明再使用也可以不声明,以字母下划线开始,不能包含特殊字符。驼峰命名法
php严格区分大小写,
变量重名的话,后面的会覆盖掉前面的
undefined valiable (未定义的变量)
10.0 等量代换
$a = 'b';
$b = 'c';
$c = '123';
echo $$$a;//123
11.0 var_dump()
打印变量的详细信息,可以传一个,也可以传多个,用,(逗号)隔开就行
12.0 php中的数据类型
12.1 8中主要数据类型
3种伪类型
12.2 主要数据类型又分为
标准类型:1.0 整形(int|integer)
10进制 8进制等都行
范围-21亿到21亿之间,超过的话就溢出
2.0 浮点型(float,double,real)
可以用科学计数法
不要比较两个浮点数的大小,有误差
$a = 2e3;//2乘以10的3次方
$b = 2E-2;//2乘以10的-2次方
var_dump($a,$b);// float(2000) float(0.02)
3.0 布尔型(bool | boolean)
真或假 true和false
4.0 字符串
4.1 单引号 不解析 变量
4.2 双引号 解析变量
4.3 ‘’// 空字符串
转义字符有\n 换行
\r 回车
\t 水平制表符
\\ \
\$ $
\' '
\" "
单引号直解析\\ \'
echo ''后面加,(逗号)就可以输出多个字符串
4.5 花括号{}
4.51将变量阔成一个整体
如:$name = "123"
echo "我是{$name}按时付款计划"
或者 "我${name}阿斯蒂芬快疯了"
4.52 可以对字符串中指定的字符做增删改查的操作
$var = "abc"
$var{0} = "1"
$var // 1bc
就是根据下标做操作跟js类似
$a = 2e3;//2乘以10的3次方
$b = 2E-2;//2乘以10的-2次方
// heredoc相当于双引号
$str = <<<edo
<h1>{$b}<h1>
</div>
edo;
echo $str;
echo '<br/>';
// nowdoc 不能解析变量
$sta = <<<'WER'
<div>
<h1>{$a}</h1>
</div>
WER;
echo $sta;
复合类型1.0 数组
$arr =array();//空数组
$arr = array(12,'king',true);
var_dump($arr);
2.0 对象
$obj = new stdClass();
var_dump($obj);//object(stdClass)
特殊类型1.0 资源
//资源
$a = fopen('./test2.php','r');
var_dump($a);//resource(3) of type (stream)
2.0 空 null 或者NULL
2.1变量未声明直接使用
2.2变量直接赋值为null
var_dump($a);
echo '<hr/>';
$b = null;
var_dump($b);
echo '<hr/>';
unset($b);
var_dump($b);
2.3unset()销毁的变量
12.... 5中伪类型
mixed
number
callback
void
$...
13.0 如果php中代码有中文
// 告诉浏览器以什么编码方式解析什么文档类型,防止中文乱码
header('content-type:text/html;charset=utf-8');
14.0
// 设置错误级别,E_ALL但是除了NOTICE
error_reporting(E_ALL&~E_NOTICE);
15.0 php中的数据类型转换
15.1 自动转换(隐式转换)
//其他类型转成数值型
echo 1+2,'<br/>';//3
echo 1+2.2,'<br/>';//3.2
echo 1+true,'<br/>';//true->1
echo 1+false,'<br/>';//false->0
echo 1+null,'<br/>';//null->0
echo 1+'3king','<br/>';//3king->3
echo 1+'45asdf','<br/>';//->45
echo 1+'2e2asd','<br/>';//2e2->200
echo 1+'true','<br/>';//'true'->0
//其他类型转换为字符串
echo 1,'<br/>';//1
echo 1.2,'<br/>';//
echo true,'<br/>';//1
echo false,'<br/>';//''空字符串
echo null,'<br/>';//''
$arr = Array();
echo $arr;//Array
//Catchable fatal error: Object of class stdClass could not be converted to string
// 致命错误,对象不能直接转换成字符串,程序会终止
$obj =new StdClass();
echo $obj;
// 其他类型转换为boolean类型,主要在条件语句中
$var = 0;//0->false
$var = 0.0;//0.0->false
$var = '';//->false
$var = '0';//->false
$var = null;//null->false
$var = array();//空数组->false
$var = '0.0';//->true
15.2 强制转换(显示转换)
临时转化:
方法1(类型)变量名称
注意 浮点型转换成整型是舍掉的意思
1.0 整型 (int)$age (integer)$age
2.0 浮点型(float|double|real)
3.0 字符型(string)
4.0 布尔型(boolean)
5.0 空(unset)
6.0 数组(array)
7.0 对象(object)
方法2 通过系统函数实现
1.0 整型 intval($var)
2.0 doubleval() floatval() realval()
3.0 strval()
4.0 booleanval()
永久转换:
setType($var,$type)
$var = '123'
setType($var,'int')
bool,float,string,array,object,null
对应的有getType($var) 获取变量类型(不建议使用)
我们一般通过变量函数库检测类型 is_*
只返回真或者假
is_int($var)
is_boolean($var)
1.0 整型 is_int() is_integer() is_long()
2.0 浮点型 is_float() is_double() is_real()
3.0 字符串 is_string()
3.5 布尔类型 is_bool()
4.0 标量类型 is_scalar()
标量: 整型,浮点型,字符串,布尔类型都是
5.0 空null is_null()
6.0 数组 is_array()
7.0 对象 is_object()
8.0 资源 is_resource()
9.0 是否为数值型或者字符串形式的数值 is_numeric()
16.0 常量
常量是一个简单的标识符,一经定义不能修改
分类16.1 系统常量
PHP_VERSION PHP版本
PHP_OS php运行环境
PHP_INT_MAX 整型最大值
16.2 自定义的常量
define()函数定义
一般要用大写的
define(‘NAME‘,'123')
NAME ==123
前面不要加$
define定义的时候不要加$
常量区分大小写,是全局的
另外一种就是 const AGE = "18";
根据常量的名字获取常量的值,
constant()
echo constant('AGE')
检测常量名称是否存在,返回true ,,false
defined('AGE')
获取定义的所有常量 ,自定的加系统的
get_defined_constants()
$var = [1,2,3];
print_r($var);
print_r() 打印数组的信息
16.3 魔术常量
__LINE__
以两个下划线开始且以两个下划线结束,中间都是大写
总共有8个
1.0 __LINE__
得到当前的行数
2.0 __FILE__
得到当前文件的完整绝对路径和文件名
3.0 __DIR__
得到文件的绝对完整路径
4.0 __FUNCTION__
得到当前的函数名称
5.0 __CLASS__
得到当前类的名称
6.0 __METHOD__
得到当前类的方法名称
7.0 __TRAIT__
得到当前的TRAIT名称
8.0 __NAMESPACE__
得到当前命名空间
17.0 php 中的预定义变量
// 接收表单以post形式发送过来的数据
$_POST['名称']
1.0$GLOBAL 超全局变量,包含下面所有的预定义变量
2.0 $_SERVERS 服务器和执行环境信息变量
3.0 $_ENV 环境变量
4.0 $_COOKIE http cookie
5.0 $_SESSION http seccion变量
6.0 $_FILES 文件上传信息变量
7.0 $_GET http get变量
8.0$_POS http post 变量
9.0$_REQUEST $_GET+$_POST+$_COOKIE
18.0php 中的表达式和运算符
只要是有值得东西都是表达式
18.1 算数运算符
+-*/ % 取余
-3 % -8 后面的负号没作用所以结果是 -3
php7中新增的运算符
2**3 // 8 2的3次方 幂运算符
18.2 递增递减运算符
++-- 前缀和后缀
$i=5
echo $i++ //5
echo $i //6
布尔类型不支持递增和递减
null 支持 递增,不支持递减
字符串支持递增,也不支持递减
$str = 'a';
echo ++$str// b
$str = 'b';
echo ++$str// c
++z //aa
ord()函数可以获取到对应的ascii码值
多个字符串,比如“king”
只会获取第一个k的值,ord() chr()都一样
chr() 根据ascii获取对应的值
ASCII
18.3 字符链接运算符 点.
$str1 = 'hello';
$str2 = "world";
$str = $str1.$str2;
echo $str // hello world
echo 'a'.'b';
18.4 赋值运算符
=
+= $a+=1 $a = $a+1
-=
*= $a*=3 $a = $a*3
/=
%=
点等于.= $a .= 'kk' $a = $a.'kk'
18.5 比较运算符
<> != 都是不等于
(太空船运算符<=>)
var_dump(3<=>1,3<=>3,3<=>5);
// 1 0 -1
3比1大返回1
3跟3相等返回0
3比5小返回-1
null 检测符
var_dump(0??$b??$c)
输出从左到右部位null的值,如果都为null 则返回null
第一个是0 就返回0 ,第二个是1,第一个是null 就返回第二个
18.6 逻辑运算符
结果也是boolean类型
$a and $b // $a&&$b
$a or $b // $a||$b
!$a
$a xor $b 逻辑异或 就是$a 和$b 不能同时为true 就返回true
18.7 错误抑制符
在前面加@符号就行啦
$var = 123
@settype($var,'king');
@var_dump($sddfe)
test() // 这种致命的错误是不行的
echo @(3/0);// 返回INF 表示无穷大
三元运算符
a? b : c
a为真执行b 否则 执行c
另外的 a? :c
如果a为真返回a
a为假返回c
优先级
用()改变优先级,还有短路的情况
19.0 流程控制语句
分支语句:if
循环语句:for
判断奇偶数
取余 =1 就是奇数
=0就是偶数
判断是闰年
1.0能被4整除,不能被100整除的是闰年
2.0能被400整除的也是闰年
取很多数中的最大值和最小值
max($a,$b,$c)
min($a,$b,$c)
switch(exp){
case 值1:
代码段;
break;
case 值1:
代码段;
break;
default:
代码段;
}
20.0 日期
/*
* Y:4位的年份 * m:2位月份 * d:2位的日 * H:2为的小时 * i:2位的分钟 * s:2位的秒 * w:返回一周内的第几天0~6
*
* */
echo date("Y年m月d日 H:i:s");
echo date("Y-m-d" ,time());
echo date_default_timezone_get();// utc
//设置中国标准时间
date_default_timezone_set('PRC');
碰到 exit或者是die() ,程序终止执行
exit('asdasdasd');
21.0 循环语句有
for
while
do...while
continue 跳出当前循环,进行下面的循环
php7里面的
// goto 跳转到指定位置,不能跳入循环 函数和类 但可以跳出循环
echo "w";
echo "<br/>";
goto TEST;
echo "22";
TEST:
echo "33";
22.0 自定义函数
作用:可读性,复用性
书(代码简洁之道)
函数体里面的动态变量,是局部变量,不能在函数体外面使用
如果是静态变量你看一下
function test(){
static $a = 3;
$a++;
echo $a;
}
test() //4
test()//5
全局变量
$a = 3;
$b = 4;
function test(){
echo $a;
}
test()// 会报错,需要先引用一下
function test(){
global $a;
echo $a;
}
test()
值传递和引用传递区别在&
$a = 3;
function test(&$c){
$c = 5
}
change($a)
echo $a//5
如果是new 出来的stdClass()
那就 不用这符号,因为他是在堆内存中,属于直接引用,,
像整型,浮点型,普通变量是属于在栈内存中的。
23.0 参数的默认值
function test($a=3,$b=5){}
24.0 可变参数列表
获取传递了几个参数
func_num_args()
获取参数
func_get_args();
例子:模仿var_dump
我们只做是整型和字符串的,其他的类型没写
function var_dump2(){
if(func_num_args()<=0){
return;
}
$params = func_get_args();
foreach($params as $param){
if(is_int($param)){
echo 'int('.$apram.')';
}
if(is_string($apram)){
echo 'string('.strlen($param).')' '..$param';
}
}
}
25.0 函数参数的类型,定义
// 三种array,对象,callable
function test(array $a){
}
// 注意回调函数
function test(callable $a){
$a();
}
function call(){}
test('hello world') // 注意这里要传字符串
26.0 可变函数
function test(){}
$func = 'test';
$func()
// 一般会搭配检测,函数是否存在
如:
if(is_callable($func)){}
if(function_exists($func)){}
27.0 函数嵌套,
函数都是全局作用域
function test(){
function te(){}
}
要想调用te()
必须先调用test()
所以
function foo(){
$a = 1;
function ff(){
echo $a;// 报错,不能调用的
}
}
28.0 递归的调用
function sum($n,$m){
if($m<=$n){
return $n;
}
return sum($n,$m-1)+$m
}
// 1,1,2,3,5,8
function fb($n){
if($n<=2){
return 1;
}
return fb($n-1) +fb($n-2);
}
echo fb(8) //6
30.0 匿名函数
$a = function ($b){
echo $b;
}
$a('123')
例子 :
$mes = '111'
$a = function($b){
echo $mes;
echo $b;
}
$a('123')
// 上面的$mes 是打印不出来的,要声明一下
$a = function($b){
global $mes;
echo $mes;
echo $b;
}
如果嵌套在函数里面用到use关键字
function test(){
$mes = '111';
$a = function($b) use ($mes){
echo $mes;
echo $b;
};
$a('123');
}
test();
另外一种形式
function test(){
$mes = '111';
$a = function($b) use ($mes){ //$a = function($b,$mes) {这种方法是不行的
echo $mes;
echo $b;
};
return $a;
}
$func = test();
$func('123');
31.0 冒泡排序
count() 计算数组的长度
check() 可以检查数组中 数组改变的次数
32.0 汉罗塔问题,
3根柱子, 放到其他柱子里面,注意大的圆盘不能压在小的圆盘上面,
所以就是,把第一个放在第二个柱子,把第二个放在第三个柱子,然后把第一个圆盘再放在第三个柱子,然后把第三个放在第二个柱子
function test($n){
if($n<=1){
return $n;
}
return 2*test($n-1)+1;
}
var_dump(test(2),test(3),test(4));
33.0 函数库基础
函数(function) 是实现特定功能的,可以重复执行的代码。
34.0
// 获取字符串长度
$a = '';
$b = '132';
echo strlen($a);//0
echo strlen($b);//3
一个汉字是3个字节mbstring()
35.0
// 字符串大小写的转换
$a = 'sads';
$b = 'SDFGDFDF';
echo strtoupper($a);//0
echo '<br/>';
echo strtolower($b);//3
echo '<br/>';
// 句子首字母转换为大写
$c = 'asdasd';
echo ucfirst($c);
// 每个单词的字母转化为大写
$d = "hello world ni haowo";
echo ucwords($d);
// 替换,这两个是全部替换的 str_replace ,区分大小写 str_ireplace,不区分大小写
$a = 'javascript';
echo str_replace('a','b',$a);//jbvbscript
echo str_ireplace('R','W',$a);//javascWipt
htmlspecialchars函数
预定义的字符转换为HTML实体
ENT_COMPAT 默认,仅编码双引号
ENT_QUOTES 编码双引号和单引号
ENT_NOQUOTES 不编码任何引号
$a = 'A>B,B>c,sjdhgf&sdjhfg,"wyefjh",\'i\'m no\'';
echo $a;
echo '<br/>';
echo htmlspecialchars($a,ENT_QUOTES);
36.0
// 删除空格或其他字符 都可以接受第二个参数ltrim rtrim trim
//ltrim() 删除前面的
// rtrim 删除后面的
// trim 删除所有的
// 如果不加第二个参数,默认删除 \0 制表符 \r 空格 \n 垂直制表符
$str = "\n\n\t\tacd\t\t";
echo ltrim($str); // acd
37.0
// 字符串位置的获取
// strpos 区分大小写,某个字符在字符串中第一个出现的位置
// stripos 不区分大小写,两个如果没找到,返回false
// strrpos 区分大小写 最后一次出现的位置
// strripos 不区分大小写,最后一次出现的位置
$str = "javascript";
echo strpos($str,'a');//1
echo strpos($str,'ww');//false
38.0 substr 函数,实现字符串的截取,三个参数
str start length 第二个参数是起始位置,后面的是长度
$str = 'javascript';
echo substr($str,0,4);//java
echo substr($str,4);//script
echo substr($str,-2);//pt
echo substr($str,-5,-2);//scr
// strstr 搜索一个字符串在另一个字符串中第一次出现的位置,并截取,区分大小写
// stristr 同上,不区分大小写
$str = 'javascript';
$str1 = 'a';
echo strstr($str,$str1);//avascript
38.0 字符串的反转 strrev
$a = 'abc';
echo strrev($a)// cba
39.0 字符串加密操作 md5()// 长度 32 不可逆
40.0 打乱字符串 str_shuffle // 如产生验证码 每次值都不一样
41.0 explode函数 字符串的分割操作,分割的内容是数组
$str = 'javascript';
$str1 = 'a';
print_r(explode($str1,$str));//Array ( [0] => j [1] => v [2] => script )
42.0 implode 数组的合并
$str = array('1','2','3');
echo implode($str);//123
echo implode('|',$str);//1|2|3
43.0
// 格式化字符串
// sprintf函数
// 说明%符号多余arg参数,则必须使用占位符,占位符位于%符号之后,由数字和"\$"组成
$num = 5;
$str = "shanghai";
// 把第一个arg个第一个参数 把第2个arg个第2个参数
$txt = sprintf('wo shj %u in sdh %s',$num,$str);
echo $txt; wo shj 5 in sdh shanghai
//格式化字符串 $format ,规定字符串以及如何格式化其中的变量,可能的取值
//%% 返回一个百分号% %b 二进制
// %d 包含正负号的10进制数 %e 使用小写的科学计数法
// %s 字符串 %f 浮点数
$txt = sprintf('wo shj %b in sdh %s',$num,$str);
echo $txt; wo shj 101 in sdh shanghai
$txt = sprintf('wo shj %d in sdh %s',$num,$str);
echo $txt; wo shj 5 in sdh shanghai
$txt = sprintf('wo shj %.2f in sdh %s',$num,$str);
echo $txt; wo shj 5.00 in sdh shanghai
$txt = sprintf('wo shj %.5f in sdh %s',$num,$str);
echo $txt; wo shj 5.00000 in sdh shanghai
// 参数多的情况
$number = 123;
$txt = sprintf("带两位小数:%1\$.2f不带小数:%1\$u",$number);
echo $txt; 带两位小数:123.00不带小数:123
$txt = sprintf("wo shj %1\$s in sdh %1\$s",$num);
// 注意里面一定要是"" 双引号,双引号
echo $txt; wo shj 5 in sdh 5
php 数学函数库
44.0 floor 函数和ceil()函数
floor 舍1取整
ceil 进1取整
$a = 2.1;
echo floor($a);//2
echo ceil($a);//3
$a = 2.6;
echo floor($a);//2
echo ceil($a);//3
45.0 幂运算
2的3次方
echo pow(2,3)
47.0 平方根的运算 sqrt函数
echo sqrt(4) // 2
echo sqrt(3) // 1.73205
48.0 最大值,最小值
max() min() 至少需要2个以上参数
49.0 随机数的获取
rand函数
mt_rand()函数 它将产生一个更好的随机数 // 算法好,性能好
echo rand(50,80);
echo '<br/>';
echo mt_rand(50,80);
注意会出现50 或者80
50.0 round函数 四舍五入的操作
$a = 1.738;
echo round($a);//2
echo '<br/>';
echo round($a,2);//1.74
51.0 数字格式化
number_format函数
两个参数,第二个参数保留到几位
并且进行了四舍五入计算
$a = 14578.738;
echo number_format($a);//14,579
echo '<br/>';
echo number_format($a,2);//14,578,74
52.0 浮点数余数
fmod()
echo fmod(7.8,3) // 1.8
echo 7.8%3 //1 整数的余数操作
53.0 格式化日期
第二个是可选参数,时间戳
54.0 修改时区的方法
1.0 date_default_timezone_set('PRC');
2.0 通过php.ini文件 找到date.timezone (需要重启服务器)
55.0 时间戳Unix时间戳,就是从1940年1月1日0时0分0秒到现在的总秒数
56.0 获取现在的时间戳 time()方法
echo time()
86400 就是一天的毫秒数
57.0 microtime() 获取时间戳,会带上微秒数
里面加bool类型,不加的话,微秒在前面
加的话在后面 (作用:可以计算程序所花费的时间)
例子:
echo microtime();//0.03091100 1553918332
echo '<br/>';
echo microtime(true);//1553918332.0309
58.0 获取时间戳的转换,比如3个星期之前或者之后,等
strtotime()
例子:
// 获取上一个月的日期,有坑
echo date('Y-m-d H:i:s',strtotime('-1 month'));// 不对因为他是已30天为一个单位的
echo date('Y-m-d H:i:s',strtotime('last day of -1 month'));// first day of 第一天
59.0 生成唯一ID
uniqid函数
echo uniqid();
echo '<br/>';
echo uniqid('mooc');
echo '<br/>';
echo uniqid(microtime());
echo '<br/>';
echo uniqid(microtime() . mt_rand());
echo '<br/>';
echo md5(uniqid(microtime() . mt_rand()));//这个就是我们常用的生成唯一id的常用的
// uuid 8-4-4-12 32位的
60.0
var_dump(getdate());// 获取日期信息
61.0 php中的数组
数组是一个有序映射,是复合类型
索引数组,,下标为数字
关联数组:下标为字符
$arr = array();//空数组
// 通过gettype()得到变量类型
echo gettype($arr);
// 通过is_array()检测是不是数组
echo '<br/>';
echo is_array($arr);//1
var_dump(is_array($arr));//true
// 指定下标的数组
$arr = array(3=>'a','5'=>147);
var_dump($arr);
// 定义关联数组
$arr = array('username'=>'zl','age'=>147);
true=>'45',//1 下标转为1
false=>4, //0 下标转为0
null=>we);// '' 空字符串
// 如果下标重复,后面的会替换掉前面的
// 创建多维数组
$arr = array(
array(a,b,c),
array(d,e,f)
);
// 二维关联数组
$arr = array(
'user'=>array('zl','xm','iw'),
'age'=>array(14,25,5)
);
// 通过【】创建数组
$arr = [
['id'=>1,'name'=>'xl'],
'text'=>['a',1,2],
];
// 动态创建 下标连续的索引数组
$arr[] = '1';
$arr[] = 145.2;
$arr[] = '145';
// 手动指定下标的索引数组
$arr1[3] = 14
$arr1[-15] = 46
$arr1['we'] = 65
// 多维的
$arr[][]
// 通过range()和compact()快速创建数组
$a = range(5,10); // 下标从0开始,值从5开始
$b = range(1,10,2);// 值从1开始,每次加2,步长的意思
chr() 把值转为ascii吗值
// 通过compact 创建数组的时候,只能写已经存在的变量的名称,不需要加$
$a = 12;
$b = 45;
$c = null;
$d = compact(a,b,c);// compact('a','b','c')
// define() 定义常量数组
// 5.6 之后可以用const定义 常量的名字一般要大写
const ARR2 = ['a'=>'aa',b=>'bb'];
define('ARR1',array(1,2,3));
define('ARR3',[1,4,5]);
echo '<br/>';
var_dump(ARR1);
echo '<br/>';
var_dump(ARR2);
61.0 数组的使用 ,通过键名找键值
$arr = ['a','b'];
$arr[] = 'c';
$arr['test'] = ['1',2];
$arr[0] = 12;
// 删除某个元素 unset;
unset($arr[1])// 删除下标是1的元素
// 针对二维数组的操作
$arr[] = ['id'=>1,'name'=>2,'desc'=>'wowowo'];
$arr[] = ['id'=>2,'name'=>2,'desc'=>'wowowo'];
$arr[] = ['id'=>3,'name'=>2,'desc'=>'wowowo'];
var_dump($arr);
$arr[0]['name'] = "xixixixxixi";
echo $arr[0]['name'] ;
// 删除
unset($arr[0]['name']);
// 将其他类型转换成数组
// 临时转换
$var = 123;
$var = 12.3;
$var = true;
$var =null;// 转换为空数组
// 永久转换settype($var,$type);
settype($var,'array');
62.0
// 数组运算符 +,==,===,!=, <>,!== != 和<> 都是不等于的意思
//+合并数组
$arr1 = [1,2,3];
$arr2 = ['a','b'];
$arr3 = $arr1+$arr2;
print_r($arr3);// [1,2,3] 如果键名相同只是用 左边的
$arr4 = ['a','b','c','d'];
$arr3 = $arr1+$arr4;
print_r($arr3);//[1,2,3,'d']
// == 比较键名和键值是否相同,相同返回true,否则返回false
// === 键名和键值是否相同,并且顺序也要相同
62.0 数组的遍历
1.0 foreach遍历数组
2.0 通过数组指针函数遍历数组
3.0 each()和list()函数遍历
$arr= range('a','g');
// count()得到数组中元素的个数
echo count($arr);
// 如果是null的话,返回的是0
$var = null;
echo count($var);//0
// 两种形式
foreach ($arr as $value){
echo $value;
echo '<hr/>';
}
foreach ($arr as $key=>$value){
echo $key.'--'.$value;
echo '<hr/>';
}
foreach 只能遍历数组和对象
//7.0 的一些新变化
/*
*1.0 可以通过:endforeach 代替{}
*2.0 操作的值是数组的副本 * 3.0 通过引用遍历时,有更好的迭代特性 * 按照引用进行循环的时候,对数组的修改会影响循环* */
$ww = [1,2,3];
foreach ($ww as $w):
echo $w;//123
endforeach;
$arr=['a'];
foreach ($arr as &$v){
echo $v; // a,b
$arr[1] = 'b';
}
2.0
/*
* key($array):得到当前指针所在位置的键名 如果不存在返回null
* current($array):得到当前指针所在位置的键值 如果不存在返回false
* next($array):将数组指针指向下移动一位,并返回当前指针所在位置的键值,,如果没有,返回false
* prev($array):将数组指针指向上移动一位,并返回当前指针所在位置的键值,,如果没有,返回false
*reset($array):移动到数组开始,并返回当前指针所在位置的键值,如果没有,返回false
* end($array):移动到数组末尾,并返回当前指针所在位置的键值,如果没有,返回false
*/
$arr = [
'a','b','c',
34=>'test',
'age'=>12
];
echo '键名:',key($arr),'<br/>';
echo '键值:',current($arr),'<br/>';
echo next($arr),'</br>';
echo '键名:',key($arr),'<br/>';
echo '键值:',current($arr),'<br/>';
echo next($arr),'</br>';
/*
* 键名:0
键值:a
b
键名:1
键值:b
c
* */
数组指针相关函数
list() // 将下标连续的索引数组赋值给相应的变量
each()//
$arr = [1,2,3]
list(,$a,$b) = $arr
$a = 2 $b =3
$a = [
[1,2,3]
[1,3,4]
[1,4,5]
]
forearch($a as list($name,$age,$many)){
// 类似于 $val = list($name,$age,$many
}
// each($arr) 得到当前指针位置的键值对,返回的是数组,4个部分,并且指针向下移动一位
$arr = [
'a'=>'aaa',
'b'=>'bbb',
'c',
'name'=>'w',
33=>'ddd'
];
//$res = each($arr);
//var_dump($res);
//list($k,$v) = each($arr);
//echo $k,'--',$v,'
';
//list($k,$v) = each($arr);
//echo $k,'--',$v,'
';
while(list($k,$v) = each($arr)){
echo $k,'--',$v,'<br/>';
}
a--aaa
b--bbb
0--c
name--w
33--ddd
数组相关api
1.0 创建数组操作
2.0 键值相关操作
3.0 数组指针相关操作
4.0 数组拆分与合并相关操作
5.0 数组交集与差集相关操作
6.0 数组排序相关操作
63.0 cookie的一些内容
1.0 什么是cookie
http cookie(也叫web cookie或者浏览器cookie)是服务器发送到用户浏览器并保存在浏览器上的数据,它会在浏览器下一次发起请求时被携带并发送到服务器上,http cookie是http标头的组成部分。
session 是在服务器端的。
2.0 cookie的作用是什么?
2.1 回话状态管理(如用户登录状态,购物车)
2.2 个性化设置(如用户自定义设置)
2.3 浏览器行为跟踪(跟踪分析用户行为)
3.0 与cookie相关的函数
setcookie('username','tom',time()+10*86400,'/','*/jd.com');
// 10天内有效
/* tv.jd.com
spo.jd.com
wes.jd.ocm 在这些域名下都有效 * */
setcookie($name,$value,$expire $path,$domain)
参数说明
$name 参数用于指定cookie名称
$value 参数用于设置cookie值
$expire参数用于设置cookie的声明周期
$path 参数用于设置服务器上可用cookie的路径,如果设置 ‘/’ ,则代表在整个域名内都有效,如果设置为‘/foo/,’则仅代表在域名内的/foo目录及其子目录内有效
$domain 参数用于设置cooki可用的域名范围(包含子域名)
会话期cookie是指浏览器关闭之后会被自动删除,也就是它仅在会话期间有效,会话期cookie不需要指定过期时间,
如果想马上失效的话,就把时间那个加号+变为-号就行
64.0
1.0 什么是session
session 在计算机中,尤其是在网络应用中,称为“会话控制”;
具体到web中的session指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间,因此从上述的定义中可以看到session是一个特定的时间概念。
2.0 为什么要使用session
为了解决http短连接的特性
2.1 http协议是一种无状态协议,即同一个客户端的本次请求和上次请求没有对应关系,http服务器并不知道这两个请求来自统一客户端:
优点:在于减轻服务器的压力:缺点:在于每次请求会传输大量重复的内容信息
2.2 session提供在php脚本中定义全局变量的方法,使得整个全局变量在同一个session中对于所有的php脚本文件内都有效。所以,session是汲取http服务器的用于保持状态的方法
2.3 session允许通过将数据存储在http服务器中,以在整个用户会话过程中保持该数据;所以sesssion不仅是一个时间概念,还包括了特定的用户和服务器。
3.0 session的工作原理
会话标识符(sessionID)
~会话由一个唯一标识符标识,可使用session_id函数读取此标识符,为php应用程序启用会话状态时,将检查应用程序中每个页面请求是否有浏览器发送的sessionID值,如果未提供任何sessionID值,则php将启动一个新会话,并将该会话的sessionID值随响应一起发送到浏览器
~默认情况下,sessionID值存储在Cookie中,也可以实现在url中存储sesssionID
~只要一直使用相同的sessionID值来发送请求,会话就被视为活动的;如果特定会话的请求间隔超过指定的超时值(以秒为单位),则该会话被视为已过期,如果使用过期的sessionID值发送的请求将生成一个新的会话,超时值是24分钟
4.0 与session相关的函数
session_start([array $options = []]) 启动新会话或者重用现有会话
、、 及创建一个sessionid也创建了一个session文件
$options参数是一个关联数组,如果提供的话,则会用其中的项目覆盖 ‘会话配置’中的配置选项;
如果通过get 或者post 方式,或者使用cookie提交了会话id,则会重用现有会话;
demo:
session_start() //开始session会话
$_SESSION['username] = 'mooc' // 存储session数据
、、 获取sessionid
echo ‘id是’,session_id()
设置session 名字
session_name('mooc');
$SESSION['userid'] = 5;
$_SESSION['name'] = 'xiao'
// 销毁的操作 销毁一个会话中的全部数据
session_destroy();
5.0 php配置中的session片段
65.0