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

函数:

函数定义形式:

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 <?php
2     $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 <?php
2     echo "<p>代码(1)</p>"
3 ?>
4     include ‘文件路径‘
5
6 <?php
7     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.<?php
11     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 <?php
2 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表示不显示;

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

时间: 2024-11-01 11:15:24

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

iOS Foundation 框架 224 篇相关文档分类整理

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 截至 2014-05-02 ,苹果官网 Foundation 框架相关文档共计 224 篇,分类如下: Foundation 框架概述文档:常量.

iOS UIKit 框架 346 篇文档分类整理 - 预告

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 当前正在进行的是 "iOS Foundation 框架 224 篇相关文档分类整理",量很大,但会根据实际开发中的使用频繁程序

框架优化系列文档:SVN中非版本控制文件忽略上传的设置

对于SVN代码库,只应该上传源代码.资源文件等内容进行版本管理,通常编译后的二进制文件.程序包等生成产物是不应该放到SVN上做版本管理的.因此在svn的客户端工具中设置svn的属性:svn:ignore,使本地工作目录下的哪些目录或文件不用进行版本管理,这样在本地对这些内容进行添加.修改等操作时,SVN都会对其忽略. 优点:     1.减少SVN服务器中无用文件的数量.     2.保证每次下载源代码都可以重新编译,减少因为临时文件造成的编译错误.     3.避免开发人员误将不用版本管理的内

pdf文档在线旋转的方法有哪些?

pdf文档在线旋转的方法很简单,有的时候我们的pdf文件需要进行在线旋转,将一些pdf文件准备好然后进行旋转,下面小编就给大家简单介绍一下将pdf文件在线旋转的方法. 步骤一:想要将pdf文件进行在线旋转的方法,我们可以直接在浏览器上进行搜索进入到迅捷PDF在线转换器在线网站中去: 步骤二:在网站的首页找到文档处理中的pdf旋转,找到之后就可以进行文件的转换: 步骤三:进入之后可以选择自定义设置,将文件的自定义设置一下: 步骤四:然后将pdf文件直接点击选择到界面中去,或是直接点击选择文件进行上

文档编辑的一些方法总结

我常用的一些文档编辑的一些方法总结: (1) 插入题注 (2) 插入页码 (3) 目录编号 (4) 多级标题和多级编号 (5) 谈谈如何用word写高效写作csdn blog 实例:这是我文章的结构 (1) 插入题注 问题:我在插入题注的时候想加入编号但是失败了,原因是我的多级标题和列表没有关联上 标题:将多级列表和标题样式相关联 操作: 在“开始”标签栏—->>>>”段落”—–>>>“多级列表” 参考:https://blog.csdn.net/u0105668

iOS OpenGLES 框架相关 24 篇文档排序整理

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. OpenGLES Use a compact, efficient subset of the OpenGL API for 2D and 3D

可视化webpart基础开发——TreeView控件读取文档库中的所有文件夹和文件(递归方法读取)

可视化webpart基础开发——TreeView控件读取文档库中的所有文件夹和文件(递归方法读取) 分类: SharePoint2011-12-23 14:44 1584人阅读 评论(0) 收藏 举报 文档sharepointurl测试stringforms 可视化webpart基础开发——TreeView控件读取文档库中的所有文件夹和文件(递归方法读取) 1.在部署的sharepoint网站中新建一个名为“测试文档库”的文档库,并添加各级的子文件夹和子文件,用于测试 2.在VS2010中新建空

产品需求文档(PRD)的写作方法

无论我们做什么事都讲究方式方法,写产品需求文档(以下称PRD文档)也是如此,之前我通过四篇文章分享了自己写PRD文档的一些方法,而这一篇文章主要是对之前四篇文章进行整体的摘要介绍,帮助大家快速了解写作流程. 产品需求文档(PRD)的写作 四篇章:1.写前准备(信息结构图)2.梳理需求(产品结构图和用户流程图)3.原型设计(手绘原型,灰模原型,交互原型)4.撰写文档(PRD文档)5.用例文档(UML用例图.流程图) 1.写前准备(信息结构图):http://tangjie.me/blog/52.h

Word文档如何转换成PDF文件

Word文档是一种好编辑又好保存的文档,大家日常生活接触的也比较多.但随着PDF文件使用范围越来越广泛,很多Word文档大家都喜欢用PDF的格式来保存,这样安全性更高.接下来小编就介绍一下Word文档如何转换成PDF文件.1.格式之间的转换,就需要准备第三方操作工具来进行就会事半功倍,小伙伴们可自行在百度浏览器搜索PDF转换器将其下载下来安装到电脑上.2.鼠标双击打开转换器,直接进入操作页面,在操作页面的左边有五个功能,小伙伴们根据转换需要用鼠标点击选中第二个功能其他文件转PDF.3.点击其他文