分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

php文档知识点整理(函数、方法、文件加载)

发布时间:2023-09-06 01:39责任编辑:赖小花关键词:暂无标签

函数:

函数定义形式:

function  函数名 (形参1,形参2,.... ){

}

函数参数:(2种)

形参:

1,形参一定是一个变量名!

2,该变量名只能是在该函数中有效的变量名;

3,而且只在该函数调用并执行时有效,函数结束,通常这些变量也就“销毁”。

实参:

实参就是一个“实际数据”,

该数据可以是一个“直接数据”(比如5,”abc”),也可以是一个变量中存储的数据。

实参的作用是将其数据“赋值给”形参变量。

实参跟形参之间通常应该有个“一一对应”关系:

定义形式:   function  函数名(形参1,形参2,...... ){ 。。。。}

调用形式:    函数名(实参1,实参2,..... )

默认值参数:

注意:

默认值不能是对象或资源类型;

默认值只能是常量表达式,或常量,不能是变量

定义时可以不给定形参,但调用时,却又可以给定任何个数的实参。

在系统中,var_dump()这个函数也有同样的使用效果:

var_dump($v1);

var_dump($v1, $v2, $v3); //也可以

这种应用的实现,是依赖与系统中的3个系统函数来达到的:

func_get_args(); //获得一个函数所接收到的所有实参数据,并结果是一个数组

func_get_arg(n); //获得一个函数所接收到的第n个实参数据(n从0开始)

func_num_args(); //获得一个函数所接收到的所有实参数据的个数

定义函数:

function  &函数名(形参1,形参2,.....) //注意函数名前有个引用符号“&”

{

$result = 0; //初始化

。。。。。。。

return $result; //此时返回数据,只能是变量

}

匿名函数:

表现1:

$f1 =  function(){。。。函数体;};

//这里的匿名函数定义形式上没有名字,但其实又将之赋值给了变量$f1

使用时,就跟“可变函数”一样了:$v1 = $f1();

表现形式2:

调用其他函数2(匿名函数,实参1,实参2, ...... );

说明:

1此形式的匿名函数只有定义的函数体(无函数名)

2此形式的匿名函数只能作为其他函数调用时的参数(其他函数通常有特定用处)

3此匿名函数会在调用其他函数的“过程中”被执行。

能够使用(匿名)函数当作实参的函数,并不多!

其中有一个常见的是:call_user_func_array();

其使用形式为:

call_user_func_array(匿名函数,数组);

含义:

将数组的每一项当作该匿名函数的若干个实参,传递到该匿名函数中,并执行该匿名函数,并可以从该匿名函数中返回数据。

变量的作用域:(4个)

通常说作用域,有2个:

局部作用域:只能在所定义的函数范围内使用。

全局作用域:在函数的“外部”范围使用。

——php中,局部和全局作用域是不重叠的

——js中,全局作用域是包括局部作用域的

但还有两个:

超全局:就是在函数的内部和外部都可以使用。

超全局变量只有系统内部预定义的那几个,我们不能再程序中创建超全局变量。

静态局部作用域:其实也是局部,但多一个特征:数据能够在函数退出后仍然保持不丢失。

局部访问全局变量的特定语法:

在局部范围内,使用global关键字对全局变量进行一次“声明”,则就可以使用了:

语法:global  $变量名;

实际上,函数中的global 语句,其实是创建了一个跟外部变量同名的局部变量,并通过“引用”的方式指向了外部变量的数据区

1 <?php2 ????$v1=10;3 ????function f3(){4 ????????global $v1;5 ????????echo "<br />v1 = $v1";6 ????????$v2=20;7 ????}8 ????f3();9 ?>
举例

$GLOBALS:

在函数中(局部范围),使用$GLOBALS超全局数组来引用(使用)全局变量:

$GLOBALS超全局数组的作用是用于存储所有全局变量的数据:变量名为下标,变量值为对应元素值。

全局访问局部变量的特定语句:

通过引用传递的方式向形参传递一个引用实参变量

$v1 = 10;

function  f1( &$p1, $p2){ ...... } //$p1是函数的形参,也即就是函数的内部(局部)变量

$v2 = f1( $v1, 10); //此时我们认为$v1就可以使用函数中$p1的值。

使用函数的引用返回形式:见前面引用传递的方式返回数据

函数中使用global关键字来首次引用一个全局变量,则函数结束后在全局范围就可以使用该变量了

有关函数的系统函数:

function_exists():判断某个函数是否被定义过,返回布尔值

if(  function_exists(“ func1 “)  == false ){

function  func1(){。。。。。。};//定义函数

}

func_get_arg(n):获得一个函数的第n个实参值(n从0开始)

func_get_args():获得一个函数的所有实参,结果是一个数组

func_num_args():获得一个函数的所有实参的个数。

有关函数的编程思想:

递归思想的一个基本形式是:在一个函数中,有至少一条语句,又会去调用该函数自身。

递归思想(递归函数)

1,很多问题,用递归和递推都可以解决。

2,有些问题只能用递归。

3,如果两种方法都可以解决,推荐使用递推——效率高很多!

 数组:

php中,数组的下标可以是整数,或字符串。

php中,数组的元素顺序不是由下标决定,而是由其“加入”的顺序决定。

多维数组的一般语法形式:

$v1 = 数组名[下标][下标][.....]

数组遍历:

foreach( $arr   as   [ $key  => ] $value ) //$key可以称为键变量,$value可以称为值变量。

{

//这里就可以对$key  和 $value 进行所有可能的操作——因为他们就是一个变量

//$key 代表每次取得元素的下标,可能是数字,也可以能是字符串

//$value 代表每次取得元素的值,可能是各种类型。

//此循环结构会从数组的第一项一直遍历循环到最后一项,然后结束。

}

数组指针和遍历原理:

举例:$arr1 = array(2=>1,  ‘dd’=>5,  1=>1.1,  “abc”,  0=>true)

下标:

2

‘dd’

1

3

0

值:

1

5

1.1

‘abc’

true

指针除了负责foreach循环的位置设定之外,还有其他一些函数也依赖于该指针:

1, $v1 = current( $arr1); //取得$arr1中当前指针所指向的元素的值,如果没有指向元素,则为false

2, $v1 = key($arr1); //取得$arr1中当前指针所指向的元素的下标,。。。。。false

3, $v1 = next($arr1 ); //将指针移向“下一个元素”,然后取得该下一个元素的值;

4, $v1 = prev($arr1); //将指针移向“上一个元素”,然后取得该上一个元素的值

5, $v1 = reset($arr1); //将指针移向“第一个元素”,然后取得该元素的值——数组指针初始化

6, $v1 = end($arr1); //将指针移向“最后一个元素”,然后取得该元素的值

7, $v1 = each($arr1); //取得当前元素的下标和值,然后移动指针到下一个位置。

for+next+reset遍历数组:

reset( $arr1 ); //重置数组,即:数组指针初始化,这里,返回的数据被“丢弃”了。

$len = count( $arr1);

for($i = 0;  $i < $len  $i++){

$key = key ($arr1 ); //下标

$value = current( $arr1 ); //值

//然后这里就可以对$key 和 $value进行任何作为变量的操作

next($arr1);//这里,移动指针到下一个元素(也同时丢弃了返回值)

}

while+each()+list()遍历数组:

each()函数解释:

each()函数可以取得一个数组中的一个元素的下标和值,然后再放入一个新的数组中,并且指针后移一位。

该新的数组,有4个元素,但存储的是下标和值的“双份”,类似下述形式:

array(

1 => 取出来的值,

‘value’ = >取出来的值,

0 = > 取出来的下标(键名),

‘key’ => 取出来的下标(键名)

);

list()函数解释:

使用形式:

list($v1, $v2, $v3,$v4 .... )= 数组$arr1;

其作用是:依次取得数组$arr1中下标为0,1,2,3, ....的元素的值,并一次性放入多个变量中(一一对应)

即其相当于如下语句:

$v1 = $arr1[0];

$v2 = $arr1[1];

$v3 = $arr1[2];

$v4 = $arr1[3];

..........

但是注意:只能实现这样的“从0开始的连续数字下标的元素的取值”(但并非要求数组的元素的顺序为同样的数字顺序)

foreach默认是原数组上进行遍历。但如果在遍历过程中对数组进行了某种修改或某种指针性操作(就是指前面的指针函数),则会复制数组后在复制的数组上继续遍历循环。

 1 <?php 2 // ???$arrpao = array(8,10,26,15,30,13); 3 // ???$changdu = count($arrpao); 4 // ???echo "<br>排序之前"; 5 // ???????var_dump($arrpao); 6 // ???for($i=0;$i<$changdu-1;++$i){ 7 // ???????$max =$arrpao[0]; 8 // ???????$xia =0; 9 // ???????for($k=0;$k<$changdu-$i-1;++$k){10 // ???????????if($arrpao[$k]>$arrpao[$k+1]){11 // ???????????????$a = $arrpao[$k];12 // ???????????????$arrpao[$k]=$arrpao[$k+1];13 // ???????????????$arrpao[$k+1]=$a;14 // ???????????}15 // ???????}16 // ???}17 // ???echo "<br />排序之后:";18 // ???var_dump($arrpao);19 ?>
冒泡案例

文件加载

1.有4个文件加载的语法形式(注意,不是函数):

include ,   include_once ,   require ,  require_once;

1,如果加载文件失败,则有不同的处理规则;include和require不同

2,如果加载文件重复,则有不同的处理规则;XXX和XXX_once不同;

3,他们都是语法结构,而非函数,使用形式可以有两种:

3.1  include +  ‘文件路径’;    或者  include + (‘文件路径’);

文件路径问题:(有3种)

1.相对路径

相对路径就是以“./”, 或“../”,开头的路径。

./ 表示当前网页文件的所在位置(文件夹,目录);

../ 表示当前网页文件的所在位置的上一级位置(文件夹,目录)

/   表示根目录文件

这种相对位置对一个网站中的所有内容(包括php,html,图片,css,js文件)都有效。

2.绝对路径(2种)

1.本地绝对路径:

window系统: c:/d1/d2/page3.php

unix系列系统: /d1/d2/page3.php

2.网络绝对路径: http://www.abc.com/d1/d2/page4.php

3.只有文件名(无路径)

1.在php.ini配置文件中,有:include_path设定:

我们也可以在脚本中设定:

设置载入文件:set-include-path(‘文件路径’)

获取载入文件:get-include-path(‘文件路径’)

我们也可以使用另一个函数来获取当前的include_path的值:

2,上面没找到,在当前执行的网页文件所在目录(所谓当前工作目录)查找:

所谓当前网页文件,就是地址栏中显示的那个文件名。

3,上面还没找到,则在当前include命令所在文件的所在目录中查找:

如果一个文件(A)包含文件B,在文件B中又有include命令包含文件C,

此时B中的路径问题就可能发生这种情况。

文件载入执行过程

1.从include语句处退出php脚本模式(进入html代码模式)

2.载入include语句所设定的文件中的代码,并执行之(如同在当前文件中一样)

3.退出html模式重新进入php脚本模式,继续之后的代码

1 <?php2 ????echo "<p>代码(1)</p>" ?3 ?>4 ????include ‘文件路径‘5 6 <?php7 ????echo "<p>代码(1)</p>" ?8 ?>
举例:

四种加载方法的区别:

1.include_once 和include的区别:前者能够保证不会被重复加载

2.require 和 include的区别:

如果被包含文件不存在,即引用失败(出错)时,include发出警告并继续执行后续代码,require直接终止。

require_once 和 require的区别:前者能够保证不会被重复加载。

return关键字

return的作用是:结束函数,并可以返回数据;

 1 1.<?php 2 ????echo "<p>主文件中第一行</p>"; 3 ?4 ????include‘header2.php‘; 5 ?6 ????echo"<p>主文件中第2行</p>"; 7 ?> ?8 ?9 10 2.<?php11 ????echo "header2中第一行<br />";12 ????echo "header2中第2行<br />";13 ????return;14 ????echo "header2中第3行<br />";15 ?>
举例 两个PHP中

结果:

return返回值的形式:

1.<?php ???echo "<p>主文件中第一行</p>"; ???$n = include ‘header2.php‘;//将加载文件执行的结果返回给$n ???echo "<p>主文件中第2行</p>"; ???echo "<p>主文件中 n =$n </p>";?>2.<?php ???$m = 10; ???echo "header2中第一行<br />"; ???echo "header2中第2行<br />"; ???return $m; ???echo "header2中第3行<br />";?>
举例 2个php

结果:

错误处理

语法错误:

程序没法运行,直接提示语法错误。

运行时错误:

只有程序运行到某行,或在某些特定的情形下运行才会发生的错误。

逻辑错误:

程序从头到尾运行都没有发生(并提示)错误,但程序运行计算的结果是错误的。

我们程序员主要面对的和要处理(应付)的错误,就是运行时错误。

系统错误:

E_ERROR:系统严重错误

一发生,程序立即停止执行。

该错误一般希望马上。

E_WARNING:系统警告

一发生,提示错误,并继续执行。

通常该错误希望能够在“下一工作日”去处理掉(解决)。

E_PARSE:语法错误

一发生,提示错误,而且代码完全不会运行——在运行之前先检查语法。

E_NOTICE:系统提示

一发生,提示错误,并继续执行。

发个邮件通知一下,自己安排时间有空去解决。

他们的本质是:

1 <?php2 echo "<br />E_ERROR = ".E_ERROR; ???3 echo "<br />E_WARNING = ".E_WARNING; ???4 echo "<br />E_PARSE = ".E_PARSE; ???5 echo "<br />E_NOTICE = ".E_NOTICE; ???6 ?>
他们的本质:

可见他们只是一个系统内部常量(整数常量);

用户自定义错误:(3个)

E_USER_ERROR;

 

E_USER_WARNING;

 

E_USER_NOTICE;

 人工触发:

trigger_error(“错误提示” , 用户错误代号);

错误的显示控制:

设定是否显示:display_error:

php.ini中;display_error = On; //表示显示, Off表示不显示;

php文档知识点整理(函数、方法、文件加载)

原文地址:https://www.cnblogs.com/sc1314-1218/p/8358857.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved