当前位置:首页 > 网站技术 > 后端技术 > 正文内容

PHP入门基础之知识汇总

binadmin2020-07-09后端技术72

PHP官网:https://www.php.net/

1、php基础语法:

标准风格 <? php 代码段; ?>

如果文档中只有PHP代码,结果标记要省略(规范?)

短风格 <?代码段; ?>

注意:需要配置PHP配置文件php.ini 中stort_open_tag = On.重启Apache服务器即可

ASP风格 <%代码段; %>

注意:需要配置PHP配置文件php.ini中asp_tags=On.重启Apache服务器即可

2.php代码以英文分号结束;

3.注释:、

单行注释 //注释内容  C++注释风格

         #注释内容 shell风格

多行注释 /* 注释内容*/


2、php中的变量

4.php变量:$+'变量名'

5.变量命名规则:驼峰标记法(大驼峰、小驼峰),下划线法

6.变量区分大小写;后面的变量会覆盖前面的变量;PHP是弱类型语言、变量可以不声明直接使用;

7.可变变量:$i='j';$j='k';$k='hello word';echo $$$i;(等量代换)


3、php中的数据类型:

8种主要数据类型:

标量类型(整型(int|integer)、

浮点型(float|double|real:浮点型比整型大:科学计数法Ee)、

布尔型(bool|boolean)、

字符串型(string):

   定界符[单引号,双引号,heredoc,nowdoc]],

   转义符[\' ';\" "],

   花括号{}[可以将php变量括成一个整体解析1{$变量名称}2${变量名称},可以对字符串中的指定字符做增删改查操作-->字符串的下标从0开始])[只能存储单一数据],

   单引号不解析变量,双引号解析变量;单引号只解析\'和\\两个转义符

复合类型(数组Array、对象Object(new StdClass())),

特殊类型(资源(Resource)、空(null|NULL))

5种伪类型 :number数值型 mixed混合型 callback回调函数 void没有返回值/没有参数 ...


9.

echo $var:输出字符串; 

var_dump($var):打印一个或多个变量的详细信息;

print_r($var):打印数组的信息

header('content-type:text/html;charset=utf-8');:浏览器以何种编码形式呈现

php引擎在解析变量时会尽可能多的向后取合法字符

不要对中文字符做操作(一个中文字符长度为3)

error_reporting(E_ALL&~E_NOTICE):设置错误级别,E_ALL但是除了NOTICE

array_sum() 对数组中所有值求和


10.heredoc写法:

<<<名称
代码段;
名称;

注:名称规则/a-zA-Z/

在结束名称之前不能有输出

等同于双引号


11.nowdoc写法:

<<<'名称'
代码段;
名称;

注:名称规则/a-zA-Z/

在结束名称之前不能有输出

等同于单引号


12.空(null|NULL)的三种情况:

变量未声明直接使用

声明一个变量赋值为null

unset($var1,$var2,$var3)注销过的变量值为null


4、PHP中的数据类型转换 :

自动转换(隐式转换)程序根据上下文环境自动转换;

其他类型转换成字符串型(null->空;false->空;true->1;对象不能直接转成字符串,报致命错误,程序终止;数组->Array);

其他类型转换成数值型(null->0;true->1;false->0);

其他类型转换成布尔类型(0->false;空字符串->false;'0'->fasle;0.0->fasle;null->false;array()->false)


强制转换(显式转换)

临时转换:不改变变量本身类型 

1(变量类型)$变量名称 整型:(int|integer)$变量名称; 浮点型:(float|double|real)$变量名称; 字符型:(string)$变量名称; 布尔型:(bool|boolean)$变量名称; 空:(unset)$变量名称; 数组:(array)$变量名称; 对象:(object)$变量名称;

2系统函数实现  intval($val):返回变量转换成整型之后的值; floatval($val)|doubleval($val)): 返回变量转换成浮点型的值; strval($var): 返回变量转换成字符串的值;boolval($var): 返回变量转换成布尔类型的值;

永久转换:永久改变变量本身类型

settype($var,$type) 设置变量的类型

  gettype($var) 返回变量的类型

[[不要使用 gettype() 来测试某种类型,因为其返回的字符串在未来的版本中可能需要改变。此外,由于包含了字符串的比较,它的运行也是较慢的。使用 is_* 函数代替。]]

返回的$type字符串的可能值为:

“boolean”(从 PHP 4 起)

“integer”

“double”(由于历史原因,如果是 float 则返回“double”,而不是“float”)

“string”

“array”

“object”

“resource”(从 PHP 4 起)

“NULL”(从 PHP 4 起


通过变量函数库检测变量的类型

,is_*=> true|false

整型 is_int()|is_integer()|is_long()
浮点型 is_float()|is_double()|is_real()
字符串型 is_string()
布尔类型 is_bool()
标量类型 is_scalar()
空null is_null()
数组 is_array()
对象 is_object()
资源 is_resource()
是否为数值型或者字符串形式的数值 is_numeric()



5、PHP中的常量:

常量一经定义在脚本执行期间是不能改变

系统常量:PHP_VERSION:php版本 PHP_OS:php环境 PHP_INT_MAX:php整型最大值  https://www.php.net/manual/zh/reserved.constants.php#reserved.constants.core

自定义常量:

函数定义常量:define(NAME,VALUE);  常量作用域是全局 默认区分大小写 常量一经定义,在脚本执行期间是不能改变的 常量既可以是标量也可以是数组

关键词定义常量:const NAME=值; 

使用常量:输出常量名即可;constant('$name')根据常量的名称获取常量的值(要加引号)

检测常量是否存在:defined('$name') 存在返回true,不存在返回false(要加引号)

获取已定义常量:get_defined_constants():返回数组,得到所有已定义的常量,包括自定义常量和系统常量

显示系统分隔符常量:DIRECTORY_SEPARATOR。为了避免window和linux的路径分隔符兼容,不建议使用“/","\"。

魔术常量:8个 

__LINE__:得到当前的行号

__FILE__:得到当前文件的完整绝对路径和文件名

__DIR__:得到文件的完整绝对路径

__FUNCTION__:得到当前函数的名称(递归函数可以使用)

__CLASS__:得到当前类的类名(面向对象时使用)

__METHOD__:得到当前类的方法名称

__TRAIT__:得到当前的TRAIT名称

__NAMESPACE__:得到当前命名空间的名称


6、PHP中的预定义变量

所有预定义变量都是全局变量、数组

分类:$GLOBALS 超全局变量,包含以下所有的预定义变量

$_SERVER 服务器和执行环境信息变量

$_ENV 环境变量

$_COOKIE HTTP cookie

$_SESSION HTTP Session变量

$_FILES 文件上传信息变量

$_GET HTTP GET变量 主要接收以?形式传递的数据,像表单以get形式发送数据 $_GET['名称']

$_POST HTTP POST变量 主要接收表单以post形式发送的数据  $_POST['名称']

$_REQUEST $_GET+$_POST+$_COOKIE  可以接收get和post形式的数据


7、PHP中的表达式与运算符

ord($ascii):得到指定字符的ASCII码值   chr($ascii):根据指定的ascii得到字符

算术运算符: +-*/% **

递增递减运算符: ++ -- 前缀形式:先自增再运算  后缀形式:先运算再自增(浮点型可以自增或自减)

null只支持递增不支持递减;字符串只支持递增不支持递减;布尔值不支持递增递减运算

字符连接符:.连接字符串

赋值运算符:= += -= *= /= %= .=

比较运算符:比较运算符的结果是布尔类型 

 == === != <> !== < > <=  >= $val1<=>$val2($val1>$val2 返回1 $val1<$val2 返回-1 $val1=$val2 返回0) ??(null操作符)

逻辑运算符:结果是布尔类型 and或者&& or或者|| xor ! 

错误抑制符 :抑制错误的输出,通过@符号加到会产生错误的表达式之前


一元运算符

二元运算符

三元运算符

PHP运算符的优先级:想改变优先级可以通过();有短路的情况下优先考虑短路

例子: 

$i=3
$j=8
echo "{$i}+{$j}"=.($i+$j)


8、php中的流程控制

分支语句:if  if..else   if...elseif...else  if嵌套形式

 if第二种写法:

  if():
      echo '';
    else:
      echo '';
    endif;

  或者

if():
    elseif():
    else:
    endif;
swith(exp){
  case 值:
  代码段;
  break;
}

循环语句  

for语句  

九九乘法表

for($i=1;$i<=10;$i++){
    echo '<br/>';
    for($j=1;$j<=$i;$j++){
        echo "{$j}*{$i}=".$i*$j."  ";
    }
}

while语句 简写  

  while():
    echo '';
  endwhile;
do...while语句

goto 跳转到指定位置,不能跳出循环

goto val;
 echo '';(跳过该段)
val;


9、PHP函数

变量作用域:局部变量,全局变量,超全局变量 

全局变量:是在函数外部定义的变量

PHP中全局变量在函数中使用时必须声明为global(用法:global $val)

全局变量的作用域从定义处一直到文件结尾

使用系统预定义的数组$GLOBALS替代global(用法:$GLOBALS['val'] )


超全局变量:无论在函数体内,还是在函数体外都可以直接拿来使用,超强的作用域 

变量:系统预定义函数。$GLOBALS $_GET $_POST $_SERVER $_FILES $_COOKIE $_SESSION $_REQUEST


参数的数据类型可以为任意数据类型(资源类型除外)

//$a 必选参数  $b 可选参数
function test($a,$b=true){
  echo '';
}
//注意:在函数里面使用类型转换:类型+空格
function test(int $a,int $b){
    echo $a+$b;
}
test('sdf',5);

引用传值

引用传值必须在参数的前面加上&符号

引用传值的参数值只能是变量

引用传值会改变函数外部的值

引用他指向原始变量


可变数量的参数

PHP的自定义函数中支持可变数量的参数;

PHP中func_get_args和js的ararguments一样意思

在PHP5.5及更高版本中,使用以下三个函数:

func_get_args获取函数参数列表的数组

func_num_args:获取传递给函数的参数数量。 

func_get_arg:从用户自定义函数的参数列表中获取某个指定的参数。

在PHP5.6及以上的版本中,由...语法实现。

function avg(...$args){
    // $args=func_get_args();
    $as=func_num_args();
    echo (array_sum($args)/$as); //注释$args ==  $args=func_get_args();
}
avg(1,2,3,4,5)


函数的返回值return

如果省略return语句,则返回值为null

返回值可以是包括数组和对象的任意类型(资源除外)

函数只能有一个返回值


匿名函数基础:闭包函数,是指临时创建一个没有指定名称的函数;匿名函数用作回调函数(callback) 参数的值

回调函数(callback)是作为参数传入进另一个函数中使用的函数    

系统函数call_user_func():将其第一个参数作为回调函数调用 ,第二个参数作为回调函数的参数 


内部函数

是指在函数体内部声明的函数;

内部函数只有在外部函数调用后才可以被调用


有条件函数

符合条件才会调用的函数


递归函数

是指直接或间接调用函数本身的函数

递归函数的条件:在每一次调用自己时,必须是(在某种意义上)更接近于解。

必须有一个终止处理或计算的准则;

function recur($n){
  $func=__FUNCTION__;
    if($n>=1){
        return $n+$func($n-1);
    }
}
echo recur(99999)


可变函数

是指如果一个变量名后有圆括号,PHP将寻找与变量的值同名的函数,并尝试执行它。

可变函数可以用来实现包括回调函数,函数表在内的用途

可变函数不能用于PHP自带的语言结构:echo,print,unset,isset,empty,include,require

可变函数的语法来调用一个对象的方法;


die:终止程序运行

isset():检测变量是否已设置并且非 NULL,null或者未设置变量则输出false,其他内容都输出true(包括空字符串)

empty():判断内容是否为空,空或者未设置输出true,否则输出false


10、PHP字符函数库

函数分为内置函数(internal function)和调用函数(user function)

内置函数是指PHP本身提供的各类库函数,如字符函数库、数学函数库、日期时间函数库、数组函数库等;

用户函数是指用户在程序中自定义的函数或方法


字符函数库列表

strlen($str):获取字符长度[int](一个中文等于三个字节)

strtolower($str):将字符串转换为小写[string]

strtoupper($str):将字符串转换为大写[string]

ucfirst($str):将字符串首字母转换为大写[string]

ucwords($str):将字符串中每个单词首字母转换为大写[string]

str_replace(search,replace,$str):实现字符替换,区分大小写[string]

str_ireplace(search,replace,$str):实现字符替换,不区分大小写[string]

htmlspecialchars($string[,$flags=ENT_COMPAT])
  $flags参数规定如何处理引号,其值可以为:
    ENT_COMPAT---默认,仅编码双引号
    ENT_QUOTES---编码双引号和单引号
    ENT_NOQUOTES---不编码任何引号 
    
ltrim($str[,$charlist]):删除字符串开始位置的空格或其他字符(删除的是字符串前面的字符)
  charlist规定从字符串中删除哪些字符串。如果省略该参数,默认删除以下字符:
    "\0"null "\t"制表符 "\r"回车 " "空格 "\n"换行 "\x0B"垂直制表符
    
rtrim($str[,$charlist]):删除字符串结束位置的空格或者其他字符(删除的是字符串后面的字符)

trim($str[,$charlist]):删除字符串开始和结束的位置的空格或者其他字符(删除所有的字符)

strops($allString,$findString):返回字符串首次出现的位置并返回,没有则返回false

striops($allString,$findString):返回字符串首次出现的位置并返回(不区分大小写),没有则返回false

strrpos($allString,$findString):计算指定字符串在目标字符串中最后一次出现的位置,没有则返回false

strripos($allString,$findString):计算指定字符串在目标字符串中最后一次出现的位置(不区分大小写),没有则返回false

substr($string,$start[,$length]):截取字符串($start 截取的初始位置,$length 截取的长度)

说明:如果省略length  ,则返回从start至字符结尾之间的字符串

如果start或length为负数,则倒数

案例:返回文件的格式
      $java='ad.c.dfd.jpeg';
      $javastr= strripos($java, '.');
      echo strtolower(substr($java,$javastr+1));


strstr($allString,$findString):将搜索一个字符串在另一个字符串中的第一次出现的位置,区分大小写。返回字符串的其余部分

stristr($allString,$findString):将搜索一个字符串在另一个字符串中的第一次出现的位置,不区分大小写。返回字符串的其余部分

strrchr($allString,$findString):将搜索字符串在另一个字符串中最后一次出现的位置。返回字符串的其余部分

案例:返回文件的格式
      $str1 = 'ad.c.dfd.jpeg';
      $str2 = '.';
      echo substr(strrchr($str1,$str2),1);


strrev($string):反转字符串,返回反转后的字符串

md5($string):实现计算字符串的32位md5哈希

str_shuffle($string):随机打乱字符串

explode($explode,$string):使用一个字符串分割另一个字符串,返回数组

implode($implode,$array):使用一个字符串将一维数组的值转化为字符串,返回字符串  

sprintf($format[,$args]):格式化字符串 ****重要

说明:如果%符号多于arg参数,则必须使用占位符。占位符位于%符号之后,由数字和'\$'组成

案例:

  $number=5;
    $str = 'shanghai';
    $text =sprintf('there are %u million in %s',$number,$str);
    echo $text
    //there are 5 million in shanghai

1-2.jpg1-1.jpg

案例2:

  $number = 123;
    $txt = sprintf("带两位小数:%1\$.2f
    <br>不带小数:%1\$u",$number);
    echo $txt;


11、PHP数学函数 

floor($value):向下取整

ceil($value):向上取整

pow($value,$exp):幂运算 

sqrt($value):平方根

max($val1,$val2,$val3...):返回最大值

min($val1,$val2,$val3...):返回最小值

rand($min,$max):产生随机数

mt_rand($min,$max):产生一个更好的随机数

案例:随机数

    $chars ='qwertyuiopasdfghjklzxcvbnm5647382910';
      $len = strlen($chars);
      for($i =0;$i<4;$i++){
          $char .= substr($chars,mt_rand(0,$len-1),1);
      }
      echo $char


round($value[,$pre=0]):实现四舍五入的功能,[保留小数点后几位,默认为0]

number_format($value[,$pre=0]):将以千位分隔符方式格式化数字,[保留小数点后几位,默认为0]

fmod($x,$y):将返回除法的浮点数余数

1-3.jpg

12、PHP日期时间函数  

date($format[,timestamp]):格式化本地时间/日期

date_default_timezone_set($timezone):设置时区 (中国PRC)

date_default_timezone_get():得到当前默认时区


通过配置文件修改时区

[Date]片断

date.timezone选项


time():返回当前unix时间戳

strtotime($time[,$now = time()]):将字符串转换成unix时间戳


案例:获取上一个月的日期
echo date('Y-m-d H:i:s',strtotime('last day of -1 month'))

返回当前unix时间戳和微秒数:microtime($get_as_float)

生成唯一iduniqid($prefix):

案例:uuid 8-4-4-4-12 =32
    echo md5(uniqid(microtime().mt_rand()));

getdate():可以获取日期/时间信息,返回数组


13、PHP数组

索引数组 数组的下标是数字

关联数组 数组的下标为字符

注意:PHP数组其实是不区分索引还是关联,都是根据键名找到对应的键值


定义数组四种方式:

通过array()形式创建

  手动指定下标:$arr = array(键名 => 键值[,键名 => 键值,键名 => 键值])

  定义关联数组:$arr = array('键名' => 键值[,'键名' => 键值,'键名' => 键值])

  获取关联数组的键名--->echo $arr['键名'];


  检测是否为数组:

  gettype():得到变量的类型

  is_array():检测变量是否为数组


  注意数组键名规则:

  使用合法的数字字符串

  浮点数会舍去小数部分,取整作为键名

  布尔true->1,false->0

  null->空字符串

  如果下标重复,后面的会覆盖前面的值

  如果新添加元素没有指定下标,它的下标为已有下标量最大值+1(已有下标不全为负数)

  如果已有下标都为负数,那么新添加元素的下标从0开始


  //多维数组

  索引+索引

  索引+关联

  关联+索引

  关联+关联



通过[]动态创建:

  $数组名称[]= 值 ----下标连续的索引组

  $数组名称[键名]=值 ----指定下标的索引数组和关联数组


通过range()和compact()创建

  range()快速创建下标连续的索引数组

    range ( mixed $start , mixed $end [, number $step = 1 ] ) : start起始值,end终止值,step步长

    https://www.php.net/manual/zh/function.range.php


  compact()快速创建关联数组

  https://www.php.net/manual/zh/function.compact.php

  案例:

$city='san frniso';
    $state = 'ca';
    $event ='ssss';
    $location_vars=array('city','state');
    $result=compact("event",$location_vars);
    print_r($result);

通过define()定义常量数组

define('test1',array('a','b','c','d'))

print_r(test1)


数组的取:索引数组使用索引取值,关联数组使用键名+''取值


数组的运算:+如果数组键名相同,等于左侧的数组元素的值

== 比较数组的键名和键值是否相同,返回boolearn

=== 比较数组的键名和键值、顺序是否相同

!=<> 等同于取反

!== 等同于取反


其他类型转换成数组:临时转换(array)、永久转换(settype($var,$type) 设置变量的类型)


遍历数组: count($arr):得到数组长度

通过foreach遍历数组和对象,可以通过:和endforeach代替{}

foreach遍历不再改变内部数组指针 例子:

  $arr=[0,1,2];
    foreach($arr as &$val){
        var_dump(current($arr));
    }


foreach遍历是对数组的拷贝

按照引用进行循环的时候,在循环体内修改数组对循环有影响 例子:

  $arr=[0,1,2];
    foreach($arr as &$val){
        var_dump( $val);
        $arr[1]=6;
    }

1.只要键值 foreach($arr as $value){

    statement;

}

   

2.既要键名又要键值 foreach($arr as $key =>$value){

    statement;

}


通过数组指针函数遍历数组

key($array):得到当前指针所在位置的键名,如果不存在返回null

current($array):得到当前指针所在位置的键值,如果不存在返回false

next($array):将数组的指针向下移动一位,没有的时候返回false

prev($array):将数组的指针向上移动一位,没有的时候返回false

reset($array):将数组指针移动到数组开始,并且返回当前指针所在位置的键值,如果没有,返回false

end($array):将数组指针移动到数组末尾,并且返回当前指针所在位置的键值,如果没有,返回false



通过each()和list()遍历数组

list():将下标连续的索引数组赋给相应的变量

each():返回数组当前的键值对,并将数组指针向下移动一位。返回键名、键值、key、value。如果不存在返回false(php7.2已舍弃)


list($1,$2,$3):把数组中的值赋给变量。返回数组

例子:

$arr =[
  [1,'king1,12],
  [2,'king2,22],
  [3,'king3,32]
]
foreach($arr as list($id,$username,$age)){
  echo $id,'-',$username,'-',$age,'<br/>';
}


数组相关API

  创建数组操作

      range($min,$max[,$step=1]):根据范围创建数组,快速创建下标连续的索引数组

      compart($varname,$varname2,...):快速创建关联数组

      array_fill($start_index,$num,$value):用给定的值填充数组

      array_fill_keys($keys,$value):使用指定的键和值填充数组

      array_combine($keys,$values):创建一个数组,用一个数组的值作为键名

  

  键值相关操作

      count($var[,$mode=COUNT_NORMAL])/sizeof():计算数组中的单元数目

      array_keys($array):取得数组的键名作为下标连续的索引数组返回

      array_values($array):取得数组的键值作为下标连续的索引数组返回

      array_flip($array):交换数组中的键名和键值

      in_array($search,$array[,$strict]):检测数组中是否存在某个值

      array_search($search,$array[,$strict]):在数组中搜索指定的值,如果成功则返回

      array_key_exists($search,$array):检查给定的键名或索引是否存在于数组中

      array_reverse($array[,$preserve_keys=false]):数组倒置

      shuffle($array):打乱数组的元素

      array_rand($array[,$num_req=1]):随机取出数组的键名

      array_uniqe($array[,$sort_flag=SORT_STRING]):移出数组中重复的值

      array_sum($array):统计数组中元素值的总和

      array_product($array):计算数组中所有值的乘积

      array_count_values($array):统计数组中值出现的次数

      extract($array[,$extract_type=EXTR=OVERWRITE[,$prefix=null]]):从数组中

      array_pad($array,$size,$value):用值将数组填补到指定长度

  数组指针相关操作

      key($array):得到当前指针所在位置的键名,如果不存在返回null

      current($array):得到当前指针所在位置的键值,如果不存在返回false

      next($array):将数组的指针向下移动一位,没有的时候返回false

      prev($array):将数组的指针向上移动一位,没有的时候返回false

      reset($array):将数组指针移动到数组开始,并且返回当前指针所在位置的键值,如果没有,返回false

      end($array):将数组指针移动到数组末尾,并且返回当前指针所在位置的键值,如果没有,返回false

      list():将下标连续的索引数组赋给相应的变量

      each():返回数组当前的键值对,并将数组指针向下移动一位。返回键名、键值、key、value。如果不存在返回false(php7.2已舍弃)

      array_unshift($array,$value...):在数组开头插入一个元素或者多个元素

      array_shift($array):返回数组的第一个元素

      array_push($array,$value...):在数组末尾插入一个元素或多个元素

      array_pop($array):返回数组的最后一个元素

   

  数组拆分与合并相关操作  

      sort($array[,$sort_flag=SORT_REGULAR]):对数组的键值按照升序排列,不保留键名

      rsort($array[,$sort_flag=SORT_REGULAR]):对数组的键值按照降序排列,不保留键名

      asort($array[,$sort_flag=SORT_REGULAR]):对数组的键值按照升序排列,保留键值对关系

      arsort($array[,$sort_flag=SORT_REGULAR]):对数组的键值按照降序排列,保留键值对关系

      ksort($array[,$sort_flag=SORT_REGULAR]):对数组的键名按照升序排列

      krsort($array[,$sort_flag=SORT_REGULAR]):对数组的键名按照降序排列

      natsort($array):用自然排序法排序

      natcasesort($array):用自然排序算法对数组进行不区分大小写字母的排序

      array_multisort($arr[,$arg=SORT_STRING...]):对多个数组或多维数组进行排序

  数组交集与差集相关操作

      array_diff($array1,$array2[,...]):计算数组的差集

      array_diff_assoc($array1,$array2...):带索引检查计算数组的差集

      array_intersect($array1,$array2...):计算数组的交集

      array_intersect_assoc($array1,$array2...):带索引检查计算数组的交集

  数组排序相关操作

      array_slice($array,$offset[$length=null[,$preserve_keys=false]]):截取数组

      array_splice($array,$offset[$length=0,$replacement]):将数组中一部分去掉并用其他值替代

      array_merge($arr1[,$arr2...]):合并数组

      array_chunk($array,$size[,$preserve_keys=false]):将一个数组分割成多个

      array_column($array,$column_key[,$index_key]):返回数组中指定的一列


file_get_contents($filename):得到文件中的内容,返回的是字符串

file_put_contents($filename,$data):向指定文件写入内容,如果文件不存在会创建

serialize($str):序列化字符串(把数组转成字符串)

unserialize($str):反序列化字符串(把字符串转成数组)



14、文件操作

  filetype($filename):返回文件类型

  filesize($filename):返回文件大小的字节数

  filectime($filename):返回文件的创建时间

  filemtime($filename):返回文件的修改时间

  fileatime($filename):返回文件的最近访问时间

  is_readable()、is_writeable()、is_executable()检测文件是否可读、可写、可执行

  is_file():检测给定文件名是否为一个正常的文件


  pathinfo($filename,[PATHINFO_DIRNAME | PATHINFO_BASENAME | PATHINFO_EXTENSION | PATHINFO_FILENAME ]):返回的是关联数组---文件路径相关信息

  basename():返回路径中的文件名部分

  dirname():返回文件名中路径部分

  file_exists():检测文件或者目录是否存在


文件目录函数库简介

  touch($filename,time,atime):创建文件,设置文件的访问或修改时间

  unlink($filename):删除指定文件

  rename($filename,$newName|$path):重命名或剪切文件

  copy($filename,$dest):拷贝文件 $dest:文件路径

  拷贝远程文件需要开启PHP配置文件中的allow_url_fopen = On


文件函数库常用函数及操作

fopen():打开指定文件,以指定的方式来打开或者url

  https://www.php.net/manual/zh/function.fopen.php

  //注意:fwrite向文件写入内容,如果之前有内容,会产生覆盖

fread($handle,length):fread($handle,filesize($filename))读取文件内容

注意:handle文件系统指针,是典型地由 fopen() 创建的 resource(资源)。


ftell():返回文件指针读写的位置

fseek($handle,$num):在文件指针中定位

fwrite($handle,$string,length)/fputs():写入内容

fwrite(fopen($filename,'rb+'),$string,length) 【length<$string.length 才有效】

rb+向文件写入内容,如果之前有内容,会产生覆盖

ab+向文件写入内容,追加在内容后面


1-6.jpg

fopen($filename,'w')

如果文件不存在会创建,如果文件存在,会先将文件内容清空为0,接着开始写入

目录函数库常用函数及操作

 例子:读取内容
  $filename=__DIR__.'/test1.txt';
 $handle=fopen($filename,'rb');
 echo fread($handle,filesize($filename))

 PHP_EOL 换行符

rewind($handle) 重置指针位置

 ftruncate($handle,$size)将文件截断给定的长度

 fgetc($handle,$size):从文件指针中读取字符 

 fgets($handle,$size):从文件指针中读取一行

 fgetss($handle,$size):从文件指针中读取一行并过滤掉HTML标记 

feof($handle):测试文件指针是否到了文件结束的位置

 例子:

 while(!feof($handle)){
  echo  fgets($handle).'<br/>';//一行一行读取
  echo stip_tags(fgets($handle)) //过滤html标记
  echo fgetss($handle) //过滤html标记
 }


csv格式文件操作方法

 fgetcsv($handle[,$length,$delimiter=',']) 等同于 fgets($handle) 从文件指针中读入一行并解析 CSV 字段

 fputcsv($handle,$fields[,$delimiter = ',']) 将行格式化为 CSV 并写入文件指针 



 简化文件写入和读取操作

 file_get_contents($filename):将整个文件读入一个字符串 

 file_put_contents($filename,$data):向文件中写入内容,会覆盖原有内容 $data是字符串

 如果要传字符串,先用json_encode()转成json格式


 json_decode() json格式转成数组


 mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context ]]] ) : bool

尝试新建一个由 pathname 指定的目录。

//检测目录是否存在,不存在则创建

//(如'/project/sqss/1.php',则project目录在当前磁盘的下级)


标签: php
分享给朋友:

相关文章

PHPCMS完成手机端搭建全教程(新手看完即会)

PHPCMS完成手机端搭建全教程(新手看完即会)

注:这篇文章是在我做完一个自适应和一个响应式网站后写的。所以我建议,如果可以的话,最好用@media css做响应式网站,这样就不用考虑手机端的各种问题。因为我当初做的就是自适应,但是没有想到后面的坑...

 PHP入门基础之PHP操作MySQL数据库

PHP入门基础之PHP操作MySQL数据库

1、PHP操作MySQL数据库的三种方式1.PHP mysql扩展PHP2.0版本开始引入,仅提供面向过程的接口通过调用函数实现例子:<?php     ...

PHPCMS列表页ajax动态获取更多(新手看完即会)

PHPCMS列表页ajax动态获取更多(新手看完即会)

本文取自Dong-Ge的phpcms 列表页ajax点击加载更多文章但是在实践过程中,由于我对phpcms的不熟悉导致还是浪费了一点时间经过咨询大佬,终于完美解决。1、在phpcms/model创建一...

PHP入门基础之MySQL基础

PHP入门基础之MySQL基础

1、什么是数据库相关术语:数据库系统(Database System):DBS{    数据库(Database)    数据管理系统(Database Man...

 PHP入门基础之会话控制基础和实战

PHP入门基础之会话控制基础和实战

1、会话控制基础会话是具有逻辑关联的多个简单交互的集合简单交互模型逻辑关联http是无状态协议每个请求都是单独处理的,协议无法识别当前用户。有状态vs无状态  (跟朋友吃饭【不用二次介绍】...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

分享:

支付宝

微信