?xml version="1.0" encoding="UTF-8"?
//基本语法汇总
//PHP简介
/*
PHP 是解释执行的脚本语言,也就是不用编译就能直接执行,使得PHP的开发效率很高,但是执行效率会比较低;
PHP 输入弱类型的语言,也就是,系统会根据你输入的数据进行判断是属于那种语言,然后进行相应的处理;
*/
//PHP变量与常量
//“.”是字符连接符
$a = 'ni';
$b ='hao';
$c = $s.$b;
echo "$c";
/*
PHP中变量的名字是区分大小写的;
常量: 在PHP脚本执行过程中不能改变的量叫常量,常量也是区分大小写,但习惯上我们将常量进行全大写;
常量的定义: define('a', 123); const a = "123"; 两种定义常量的方式;
魔术常量: 也称作 预定义常量,以_FOOL_这种形式,一般都是系统提供的常量;方便使用;
注意: 常量一般是标量,常量前没有$符号;
*/
//控制流语句
if (condition) {
# code...
}elseif (condition) {
# code...
}
switch (variable) {
case 'value':
# code...
break;
default:
# code...
break;
}
//先判断后执行
while ( <= 10) {
# code...
}
do{
//先执行后判断
}while ( <= 10);
for ($i=0; $i < ; $i++) {
# code...
}
foreach ($variable as $key => $value) {
# code...
}
break; continue;
//goto 语句,跳转语句 也可用于跳出循环;
goto 'a';
echo "nihao";//将不会被执行
a:
echo "wo henhao ";//将会被执行;
//包含语句
include include_once require require_once;
都是讲一个文件包含到另外一个文件里;包含就要执行被包含的文件;
include 导入几次被执行几次; 文件不存在,报warning;
include_once 可以避免多次导入;
require 导入的文件如果不存在,直接报error;
require_once 可以避免多次导入;
//函数:
PHP不支持函数的重载,也不支持函数的重定义和取消一个已经声明的函数;//说深了就是没有指针相关操作;,说白了就是函数一旦被创建,就是一个故事的;
//函数的参数传递分为: 按值传递 ,引用传递;
function test($a){//按值传递,只是传递了a的值,并不会改变a变量的值;
return $a;
}
function test1(&$a){//引用传递,是直接将a变量的地址拿过来用了,通过地址是可以直接找到a本身的,所以可以直接修改;
return $a;
}
注意: 引用传递的时候,参数必须为一个变量;
//函数中的默认参数 :默认参数也就是函数的参数,有默认值,以便在调用函数的会后,不传参数也能实现;
function test($ary = ['han','san','shao'],$a){
//$ary 就是默认参数, $a属于常规参数;
//需要注意的是,当参数中及包含常规参数,又包含默认参数的时候,请将常规参数放在左边,以便使用上不出问题;
}
//定义函数参数时,还可以指定函数的参数的类型,但是如果传入的不是指定类型的时候,系统会进行尝试转换成对应的类型;(原因很简单,传入的数据类型一般为弱类型,所以可以进行转换)
class A{};
class B{};
class C extends A{
//创建了一个c函数 继承自A;
}
function test(A $v){
//如果输入以上三个参数,B将会报错error,而C则不会,C是A类型的函数;
}
注意: 可以通过 declare(strtct_types = 1); 语句,设置为严格模式,然后数据类型就必须为相对应的;
//可变函数: 目前不在我的控制范围之内 可变函数:
//内置函数,php系统已经封装好的函数;
//闭包函数,匿名函数,可以将一个匿名函数赋值给一个变量,使用; function函数
//递归和迭代
-------------------------
//字符串//
单引号好双引号的区别: 单引号不具有运算功能,双引号具有运算功能(针对于转义字符);
字符串的连接使用: ‘.‘ ; $a = 'dsa'.'da';
字符串的操作:
ucfirst(str) upper case first 首字母大写;
lcfirst(str) lower case first 首字母小写;
ucwords(str) upper case words 每个单词首字母都大写;
strtoupper(string) 全大写;
strtolower(str) 全小写;
stripos(haystack, needle) 查找某个字符串或字符在haystack中首次出现的位置 ,因为有i所以不区分大小写; string ignore posation;
strpos(haystack, needle) 区分大小写; 如果发现返回位置,如果未发现返回 false;
strripos(haystack, needle) 查找某个字符串或字符在haystack中最后出现的位置,因为有i所有不区分大小写; string reciprocal ignore posation;
strrpos(haystack, needle) 查找一个字符串,区分大小写, 倒数的位置(reciprocal);
str_replace(search, replace, subject) 从sub里搜索所有的search 替换成 replace ; 并且区分大小写;
str_ireplace(search, replace, subject) 不区分大小写; extends: 还可以设置执行的次数;
substr_replace(string, replacement, start,length) 默认可以不带length : 将string 中的从start开始 length长的字符串替换成replacement 并生成一个新的字符串;
substr(string, start ,length) 从string中 以start开始,截取length长的子串。如果length不带,则表示为从string中以start位置开始截取到底;并返回一个新的字符串,如果不存在返回false;
//去除收尾特殊字符
trim(str); 去除字符串收尾的空格等转义字符
ltrim(str);
rtrim(str);
trim( string,str); 指定要去除str这个转义赐福;(str必须为特殊的转义字符???);
//字符串的长度
strlen(string) ;
//转义和还原字符串
addslashes(str) 转义成带有转义字符的字符串;便于存储;
stripslashes(str) 反转义成没有转义字符的字符串;便于展示;
MySQL 规定的转义方法为:mysqli_real_escape_string();
//重复一个字符串
str_repeat(input, multiplier);把input重复multi遍返回一个字符串;
//随机打乱一个字符串
str_shuffle(str); 随机打乱一个字符串;
//分割字符串
explode(delimiter, string); 把字符串string以deli进行分割成一个数组返回;
---------------------------------
数组相关:
数组分为: 关联数组 和 索引数组
$ary = array('a'=>'213','b'=>'we'); 关联数组:key是字符串或者与数字的混合;
$ary = array('1'=>'213','2'=>'we'); 索引数组:key是纯数字,索引数组默认是从0 开始,如果自定义了一个数字,则下一个value的key为自定义的数字+1;
四种创建形式:
$ary = array('a'=>'213','b'=>'we'); 函数创建模式
$ary2 = ['a'=>'213','b'=>'we']; $ary2 = ['han','san','shao']; 类c语言创建模式
$ary3[] = 'a';$ary3[] ='b'; $ary3['ac'] = 'c'; 单value创建模式
//特殊的创建方式: range()
$ary4 = range(1,5); 创建一个从1到5的数组; $ary4 = range(1,5,2); 创建一个从1到5每隔两个递增的的数组;
print_r(expression); 格式化输出数组;
//二维数组和多维数组 Discard;
数组的相关操作;
//是否存在某个值;
in_array(needle, haystack);needle 是否在hay里面;
//数组转化成字符串;
implode(glue, pieces);将数组的value以glue为分隔符进行拼接成一个字符串;
//计算数组中的单元数目:
count(var) 浅度计算 count(array,count_recursive);或者count(array,1); 进行深度遍历;
//数组当前单元和数组指针;
current(array);代表当前单元,也就是当前数组指针指向的单元,默认是指向第一个;
//四中可以数组指针指向的方法;
end(array); 指向结尾;
prev(array); 指向上一个单元;
reset(array); 指向第一个;
next(array); 指向下一个;
//数组中的键名和值;
//获得当前数组内部指针指向的单元的key
key(array);
//判断key是否存在:
array_key_exists(key, array); key是否在array里存在;
//获得一个数组中的所有或部分key;
array_keys(input); 返回所有的key ; array_keys(array,value);返回在array中value的key(有可能有多个);
//获得数组中的所有值, 是否可以加参数标识一个key的值有待测试;
array_values(input); 返回所有的值,并为其建立数字索引;
//获取某个值
$array[key];
//搜索给定的值返回key
array_search(needle, haystack);返回最先出现的哪个value的key; 如果出现多次,又想要多次的key可以用 array_keys();
//填补数组;
array_pad(input, pad_size, pad_value);把input 数组用Value填补成size这么大;
//制造出一个全新的数组;
array_fill(start_index, num, value);索引号开始位置,个数,填充的值;
//制造一个全新的数组;
array_fill_keys(keys, value);keys 是一组索引号 , value是值;
//从数组中随机去除一个或多个单元;
array_rand(input,num); input知名单元,num指明个数,默认为1;
//数组打乱和数组排序;
sort(array); 数组排序; 从低到高 成功是返回ture 失败返回false 并不保存索引关系;
rsort(array); 从高到底
sort_flags是可选参数: Sort_regular 正常比较 Sort_numeric 当做数字比较 Sort_String 当做字符比较 Sort....更多;
asort(array); 排序并保留索引关系;
arsort(array); 从高到底 并保留所以关系; 索引号,单元值的关系;
//将数组打乱
shuffle(array);将数组打乱;
//遍历数组;
//遍历分为: for ,foreach 。each , list四种方法遍历;
for ($i=0; $i < count($ary); $i++) {
echo current($ary);
//for 遍历数组的内部索引并没有发生改变;所以这个值一直保持不变;为第一个value的值;
echo $ary['i'];
}
foreach ($ary as $key => $value) {
echo $value;
echo current($ary);/ var_dump(current($ary));前者不带数据类型,后者带数据类型;foreach也不会改变索引(PHP7中不改变,老版本是改变的);
}
另:foreach是对数组的备份进行的操作,不会影响到数组的本身;
each(array); 获得当前的内部指针指向的单元的值,并将内部指针指向下一个单元,如果指向最后一个则停留在最后一个,所以each遍历数组后要记得用 reset(array);回复内部指针位置;
list(varname);万能接收器;
while (list($key=>$value)=each(array)) {
var_dump($value);
}
each($a,$b,$c) = array($a,$b,$c);
each(array)会分别接受ary的值, PHP7是正序,PHP5是逆序;
//数组的拆分与合并
array_chunk(input, size);把input数组以每组szie个数组 另: 添加参数 ture可保留原来的索引号和单元值得关系; 默认不保留其关系;
array_merge(array1);将多个数组进行合并,如果有重复key,如果是非数字,直接进行覆盖,如果是数字不进行覆盖;
$ary+$ay +好的合并数组是以添加的方式,如果发现重复键值则放弃添加;
//添加删除数组中的元素;
array_unshift(array, var);把var插入到array的头,顺序不变,但非数字索引号将会被重置;
array_shift(array);把第一个值移除;
array_push(array, var);压入一个后者多个;
array_pop(array);退出一个;
//其他常用函数;
array_slice(array, offset);取出一段,从offset开始 ;额外参数: num : 从offset开始num个;
array_splice(input, offset);去除一部分;
is_array(var);判断是不是ary;
array_sum(array);所有的数字值得和;非数字会被视为0;
array_product(array);所有的数字的乘积,非数字会被视为0;很多时候回出现0结果;
array_flip(trans);键值进行交换;
//系统预定义很多数组;用于返回请求头信息,请求信息,请求参数,等各种信息;
$_SERVER 包含头信息,路径,脚本位置等各种信息;
$_GET 接受get请求
$_POST 接收post请求
$_FILES 接收文件
$_SESSION $_COOKIE
$_REQUEST 包含 $_GET $_POST $_COOKIE等信息;
//经测试post files是独立解析的两个数组;
时间与日期
初始的日期一般为格林尼治时间,比中国的时间慢了8个小时;
//获取当前时间: 计算机元年 1970.1.1
gmmktime();可以获取当前的时间戳(包含 GMT日期的UNIX时间),也可以用于把GMT日期转换成UNIX时间戳 gmmktime(12,12,12,1,12,2018);从右到左的参数可以被省略而被当前时间代替;
mktime();与gmmktime用法一样,具体差别????
microtime();获得当前时间带有微妙数,不管是UNIX时间戳还是微妙,都是以秒为单位; 选填参数: 如果添加 'ture'则返回一个浮点数;
time();是基本时间戳函数,返回当前时间的UNIX;
getdate();获得日期时间信息;然后相关详细的Ary; 关键参数: key:0 是代表的时间戳;
//常用的时间出来方法
date(format);根据参数,获取想对应的时间信息;
//计算两个时间的时间差
//可以将任何的英文时间的描述转换成一个时间戳;
strtotime(time);
//日期的加减运算;
strtotime(time);还可以进行时期运算: strtotime('last Monday + 4 days'); 就可以表示上个月+四天的那个日期;
//验证日期的有效性
checkdate(month, day, year); 返回 true or false;
表单
实现上传数据
//form enctype 标识 传输文件;
text:
//文本框
color:
//颜色选择器
datetime:
//时间
month:
//
week:
email:
//填入邮箱
password:
//密文输入
number:
//数字输入
range:
//范围输入
search:
//搜索框
url:
//连接输入
//单选 复选 下拉 文件
radio: //单选框
male
famale
checkBox: //多选框
male
famale
select: //下拉菜单
nihao
nihua
nihenhao
文件://文件
// 提交按钮
// GET 和 POST
get会把参数直接拼接到请求地址后面,进行与后台交互,Post是把参数都放到了请求的Body里面;
get安全性比较低,因为请求的参数都是暴露的;
get执行效率高于post;
get是form的默认方法;
get传输限制为2k ,post理论上是不限制数据大小,但是,PHP默认是有一定的限制的,特殊情况需要配置PHP.ini 相关配置;
MySQL相关
//方法错误提示
Call to undefined method 调用未定义的方法,一般都是方法类型不正确或者名字写错了;
php静态缓存
生成缓存,获取缓存,删除缓存;
$key文件名字 $value文件值 $path文件地址
构造函数??
dirname(_FILE_);//获得当前的目录;
Memcache and Redis 都是管理数据的,都是在内存里的;
redis可以定期将数据备份到磁盘(持久化)
memcache只能存储键值对;
终端-》数据库
php语言 -》数据库
redis
set key value 添加
get key 获得
setex key time value 设置过去时间
del key 删除缓存
php操作redis
实例化-连接 的操作;
定时任务;
php大部分都是在linux系统运行的
Linux系统定时任务;
?>