php基础知识
apache版本有 1.3版本 2.0版本 2.2版本 2.4版本
官网:apache.org
使用最新版本的前一个或两个
phpstudy-apache2.4.39的目录结构
bin:启动apache服务
conf:配置文件
htdees:站点文件
logs:日志文件(access.log: 服务器运行日志,error.log:服务器错误日志)
modules:apache运行时候需要的支撑文件(扩展文件)
操作文件是:conf logs
一:
1.
书写php语句时,必须写在里面
php的输出语句是echo
例子:echo "你好";
二:
单引号和双引号的区别:
双引号:输出变量会输出值
单引号:输出变量不会输出值
1.
php的基础语法有:
1.默认语法:
2.短标记语法:
3.asp风格语法 <% // %>
php注释:
//:单行注释
/* */:多行注释
:shell注释(单行注释)
php输出语句:
echo:一次输出多个数据,不能输出数组 布尔:true:1或false:空白
print():函数 输出函数 每次输出一个值 布尔:true:1或false:空白
print_r():函数 变量和数组 布尔:true:1或false:空白
var_dump():函数 输出内容的类型和长度1 变量和数组 布尔:true:bool(true)或false:bool(flase)/用于代码测试
标识符(关键字):标识符不能是自定义的变量名
概念:系统使用过的符号
例如:echo print print_r var_dump
数据类型:2
a.原始数据类型:
数字型:int float double
布尔型:boolean(简写bool)
字符串型:string(用单引号和双引号括起来)
资源型:resource
空典型:NULL
b.复合数据类型:
数组:array()
对象:object()
定义变量,常量:
a.变量:
自定义变量
1.必须以\(开头
2.变量名有字母,数字,下划线(\)后面不能是数字)
3.变量名不能是关键字
定义变量:
$num;//定义好的变量
变量赋值:
$num=10;
$num1;
$num1=20;
使用变量:
必须先定义好了变量和值才能使用变量。
系统变量
$_SERVER 服务器相关参数
$_GET 表单get方式提交
$_POST 表单post方式提交
$_FILE 文本框类型为file提交
b.常量:
define(常量名,常量值);
注意:
常量名-程序一般来说都是使用的大写字母(不会使用$符号)
变量的作用域:
a.局部变量
1).方法内部(方法无参)
2).方法参数(方法有参)
3).静态变量(static $qwr=45;)
b.全局变量(在整个php里面都可以使用)
1).
2).
3.掌控运算符和表达式
1).运算符
与=的区别:
==:比较的是数值是否相同
===:比较的是数值是否相同 和数据类型书否相同
概念:能够运算的符号,运算后有一个结果
a.算数运算符
+ - * / % ++ -- += -= *= -= %=
b.关系运算符
== > < >= <= !=
c.逻辑运算符
&&:(与) ||:(或) !:(非)
d.字符串连接符
.:连接符
e.赋值运算符
=:赋值符
f.运算符的优先级
高到低
()
++ -- !
* / %
+ -
> < >= <=
== !=
$$
||
? :
=
2).表达式
a.单目运算
概念:一个变量的运算
例如:$num++ $num--
b.双目运算
概念:至少2个变量,并且用运算符连接
例如: 10 > 20
c.三目运算
概念:表达式为true,值1.表达式为flase,值2
例如:
10>3?4:6;
10大于3:对就是4,错就是6;
三:
1.php条件语句
1).单个if语句
语法:
if(条件表达式){
语句块;
}
表达式:返回为true或false(0或非0 )
2).if-else语句
语法:
if(条件表达式){
语句块;
}else{
语句块;
}
if-else 语句 只选择一个执行
3).if-else-if.....else语句
语法:
if(条件表达式1){
语句块1;
}else if(条件表达式2){
语句块;2
}
........
else{
语句块3;
}
注意:多个条件只执行一个条件
4).if嵌套
语法:
if(条件表达式1){
if(条件表达式2){
语句块1;
}else{
语句块1;
}
}
5).switch()语句
语法:
switch(值){
case 常量1:
语句块;
break;
case 常量2:
语句块;
break;
default:
语句块;
break;
}
注意:值只能是数字,字符串;
6).break;
break;跳出循环语句或停止语句
四:php的循环语句
一个空格;
abs();绝对值;
1.while()循环语句
语法:
while(条件表达式){
重复动作;
更新条件的语句;
}
例子:
\(i=1;
while(\)i<10){//i小于10就执行
echo i;//输出i的值
i++;//i加一
}
至少执行0次
语法:
do{
重复动作;
更新条件的语句;
}while(条件表达式);
例子:
$i=1;
do{
echo i;
i++;
}while($i<6)
至少执行一次
break语句:
结束循环
$i=1;
while($i<10){//i小于10就执行
echo $i;//输出i的值
$i++;//i加一
if($i==5){
break;
}
}
continue语句
只能在循环中使用,结束本次循环,遇见continue的时候就不会执行continue之后的代码
$i=1;
while($i<10){//i小于10就执行
echo $i;//输出i的值
$i++;//i加一
if($i==6){
continue;
}
}
2.for()循环语句
语法:
for(初始值;判断式;递增或递减){
要输出的语句;
}
//
for(\(i=1;\)i<9;$i++){
echo "";
}
五:php函数
1.函数的概念
独立的子程序,能够完成一定的功能(有可能很复杂,简单)
好处:
1).减少代码冗余
2).维护代码更简单
3).多人同时开发,开发效率高
2.函数的定义
语法:
function styer([var1,var2,.....]){
//函数体(功能块)
return value;
}
3.函数的调用
styer([var1,var2,.....]);
4.函数的分类
1).无参无返
2).无参有反
3).有参有反
4).有参五反
5.变量函数(用的不多)
//定义函数
function hoer(){
echo "你好";
}
//把函数赋值给变量
$qw="hoer";
//通过变量来调用函数
$qw();
6.参数分类
按值传参
引用传参(必须定义变量)
默认值
7.shuffle():随机排序
六:数组
1.
1).理解数组的概念
注意:这一组数据可以不是相同类型的值
2).创建数组3种
a.使用array()函数创建-推荐
例1:\(arr1=array(1,2,3,4,5,6);
例2:\)arr1=array(0=>"a",3=>"8",2=>"b");
b.使用range(min,max)函数创建-不用
$arr2=range(4,9);
c.使用[]创建数组,这个创建数组
$arr3=[1,2,3,4,8,6];
3).数组存值2种
第一种:$arr1=array("a"=>45,"b"=>46,"c"=>47);
第二种:
$arr2=array();
$arr2["a"]=2;
$arr2["A"]=6;
$arr2["b"]=8;
注意:键名是唯一的,值可以重复
4).遍历和取出数组的值
取值:
$数组名[键值];
$arr2["a"];
遍历数组:
第一种:foreach()循环
例子:foreach($arr2 as $key=>$vlaue){
echo $key;
echo $value;
}
第二种:for()循环-一般不用
注意:键名必须是连续的数字。
第三种:指针(不常用)
key():获得当前指针的键名
current():获得当前指针的值
next():执行指向下一个
例子:
echo key().""=>ccurrent()."";
2.
1).数组元素的添加和删除
添加数组:
int array_unshift(array,value)在数组的头添加
int array_push(array,value)在数组的尾部添加
删除数组:
mixed array_shift(array)从头开始删除 mixed:删除的值
mixed array_pop(array)从尾部开始删除
2).搜索数组
定位是否含有元素:
boolean in_array(value,array)存在返回true,不存在返回false
定位是否含有键:
boolean array_key_exists(key,array)存在返回true,不存在返回false
根据值找键:
mixed array_search(value,array)根据值找键
3).获取数组元素
A:array array_keys(array)获取数组的所有键,并组成一个数组
B:array array_values(array)获取数组的所有值,并组成一个数组
4).确定数组的大小和唯一性
A:int count(array)计算数组的大小
B:array array_count_values(array)统计值出现的频率,返回值出现的次数组成数组,值是键,次数就是值
C:array array_unique(array)删除数组的重复值,返回一个不重复的数组
3.
1).数组排序 sort:排序
A:array array_reverse(array);逆向排序
B:array array_flip(array);置换键和值的顺序:有重复键值就是后一个键值替换前一个键值
//针对值为数值类型的数组 a:是否保留原有键
C:boolean sort(array);对值升序排序,不保留原有的键,键为默认键名
D:boolean asort(array);对值升序排序,保留原有的键
E:boolean rsort(array);对值降序排序,不保留原有的键,键为默认键名
F:boolean arsort(array);对值降序排序,保留原有的键
//针对值为非数值类型的数组 ASCII码
G:boolean natsort(array);自热排序-升序 区分大小写
H:boolean natcasesort(array);自热排序-升序 不区分大小写
//对键排序 r:代表降序
I:void ksort(array);对键进行升序排序,保留原有的键值对
J:void krsort(array);对键进行降序排序,保留原有的键值对
2).合并,拆分,接合数组
A:合并--多个数组合并为一个数组
array_merge(array1,array2,...);各个数组有相同的键,删除第一个数组的键对值
array_merge_recuralve(array1,array2,..);递归合并(多个数组有相同的键,递归合并为一个数组)
B:拆分--返回数组的一部分
array_slice(array,offset,length); offset:开始下标(数字) length:拆分的个数
C:接合--两个数组--一个数组的值作为键,一个数组的值作为新的值
array_combine(array1,array2);
注意:array key 和array value 的个数必须一样不然报错
七.常用函数函数
1.
1).工具函数
A:exit() 或 die() 终止程序的运行
例子:exit();或die();
B:boolean empty():判断value是否为空(0或NULL),为空返回true,不为空为false
例子:if(empty(value)){
echo "空值";
}else{
echo "有值";
}
C:boolean isset();判断是否有值,有值为true,没值为false
例子:var_dump(isset(value));
D:void unset();删除变量
例子:
\(num=5;
unset(\)num);
E:eval(字符串);string单引号和双引号,把字符当做代码运行
例子:
eval("echo '\(num';");等价于echo "\)num";
F:is_bool();判断是否是布尔值,是返回true ,不是返回false
例子:
$num=0;
\(sum=true;
is_bool(\)num);返回false
is_bool($sum);返回true
2).日期和时间函数
A:string date();获取当前时间
例子:
echo date("Y-m-d H:i:s");
Y:获取年(4个数字)
y:获取年(2个数字)
m:获取月
d:获取这个月的天数
H:获取小时(24小时)
h:获取小时(12小时)
i:获取分钟
s:获取秒数
l:获取星期(英文)
a:获取上午或下午
B:array getdate()获得日期或时间
C:array gettimeofday();获取当前时间
D:string gmdate();格式化时间
seconds:秒数
minuter:分钟数
hours:小时
mday:日
wday:一周的第二天
mon:月
year:年
0:时间戳
E:boolean checkdate();验证时间是否有效
F:string microtime();返回当前时间戳或微秒数
G:string mktime();取得一个日期的时间戳
H:strig strtotime();解析任何英文的日期时间成为UNIX时间戳记
例子:
echo strtotime("-2 day")."<br/>";
echo strtotime("Y-m-d",strtotime("-2 day"));
now:当前
+1 day:日期加1天
+1 months:日期加一个月
+1 years:日期加一年
I:time() 获取当前时间的时间戳
2.
1).常用的数学函数
A:int rand(min,max)产生指定随机数
例子:
echo rand(1,10);//产生1到10的随机数
B:float ceil(number)取大于number的最小整数
例子:
$num=14.23;
echo ceil($num);//结果为15
C:float floor(number)取小于number的最大整数
例子:
$num=14.23;
echo floor($num);//结果为14
D:float abs(number)取绝对值
例子:
$num=-5;
echo abs($num);//结果为5
E:float pi()取圆周率
例子:
echo pi();//结果为3.1415926
F:float round(number)对number进行四舍五入
例子:
$num=12.36;
echo round($num);//结果为12
G:int max(array)取除数组中最大的值
例子:
$num=array(12,45,36,78);
echo max($num);//结果为78
H:min(array)取除数组中最小的值
例子:
$num=array(12,45,36,78);
echo min($num);//结果为12
I:string decbin()十进制转二进制
例子:
$num=16;
echo decbin($num);//结果为10000
J:string dechex()十进制转十六进制
例子:
$num=16;
echo dechex($num);//结果为10
K:string decoct()十进制转八进制
例子:
$num=16;
echo decoct($num);//结果为20
2).字符串处理函数
A:string join(格式符,array)或implode(格式符,array) :数组通过指定的格式符转换为字符串
例子:
$num=array(1,5,6,7);
var_dump(join('-',$num));//结果为“1-5-6-7”
B:string htmlentities(string)或htmlspacialchars(string) 把标签中的html标签显示出来
例子:
$html="你好 <b>李娜</b>";
var_dump(htmlentitles($html));//结果为:你好 <b>李娜</b>
C:array str_split(string)把字符串分割为数组
例子:
$str="gsvkseih";
var_dump(str_split($str));//结果为:
D:string/boolean strstr(string,查找的字符串) 存在从此元素以后显示出来,不存在返回false
例子:
$str="agsdhdhd";
var_dump(strstr($str,'s'));//结果为:'sdhdhd';
E:string trim(string)去除左右空格/ltrim(string)去除左空格/rtrim(string)去除右空格
例子:
$str=" qw ";
var_dump(trim($str))//结果为:'qw';
var_dump(ltrim($str))//结果为:'qw '
var_dump(rtrim($str))//结果为:' qw'
F:array explode(分割符,字符串)把字符串用分割符进行分割变为数组
例子:
$str="sgetheh";
var_dump(explode('-',$str));//
G:count_chars(string,3);去除字符串的重复项
例子:
$str="qw-as-xc";
var_dump(count_chars($str,3));//
H:int/boolean strpos(string,查找字符串)存在返回子元素下标,不存在返回false
例子:
$str="qwedhrun";
var_dump(strpos($srt,'d'));//结果为:3
I:int strlen(number)获取字符串的长度
例子:
$str=" tgid ";
var_dump(strlen($str));//结果为:6
J:string substr(string,offset,length)截取string字符串从ofset下标开始,截取长度
例子:
$str="eghyndd";
var_dump(substr($str,3,2));//结果为:yn
八.文件处理
1:
1).
文件:*.ppt *.exect .docx或.doc *.txt *.jpg ......
文件作用:存储很多数据
在计算机操作文件是需要权限
文件权限:读和写,可读可写
读:r(read)
写:w(write) 或 a(append)追加
is_dir(path) 根据路径判断是否是文件夹
file_exists(path) 根据路径判断文件夹或文件是否存在
mkdir(path) 创建文件夹
is_file(path) 根据路径判断是否是文件
fopen(path,'权限') 打开文件
fclose(file) 关闭文件流
fweite(file,string,length) 写入字符串//file:打开文件 string:写入内容
file_get_contents(path) 读取文件
feof(file) 是否循环读到最后的位子
fgets(file) 逐行读取
fgetc(file) 一个一个的读取内容
string serialize(content) 序列化
array unserialize(file) 反序列化
2:
1).
filesize(path); 计算图片的大小
fread(file,length); 二进制打开文件 读取:rb 写入:wb
浙公网安备 33010602011771号