本节主要是php中函数的学习:

 <html xmlns=http://www.w3.org/1999/xhtml>
<head>
<meta http-equiv=Content-Type content="text/html;charset=utf-8">
</head>
<body>
<?php
/*
* PHP中的函数
* 函数使用关键字function来定义
* 通常由函数名称、参数、函数体和返回值四部分组成
* ① 不允许函数重名
* ② 不能以数字开头,只能包括字母、数字和下划线
* ③ 函数名不区分大小写
* ④ 可使用函数名直接调用,后跟需要传入的参数并用小括号括起来
如果没有需要传入的参数,则只写小括号
* ⑤ 在php脚本中,可以先调用函数而后定义函数,谁先谁后没有固定要求
*/
function returnNum($num1,$num2){
$sum=$num1+$num2;
return $sum;
}
echo returnNum(3,5)."<br/>"; /*
* 工作中,有时还会将任意数量的参数传递给函数
* php中func_num_args函数返回参数总数,func_ge_args函数返回参数的具体信息
*/
function muti_parameters(){
$all_parameters=func_get_args();
foreach($all_parameters as $key=>$value){
echo "键:$key=>值:$value<br/>";
}
echo "函数体所含参数数量:".func_num_args()."<br/>";
echo "执行完一次muti_parameters函数<br/>";
}
muti_parameters(1,2,3,'你好');
muti_parameters(); /*
* 按值传递
* php中出了对象类型外,其他类型的参数传递方式都是值传递
*/
function example($num){
return $num*$num;
}
echo example(5)."<br/>"; /*
* 按引用传递
* ① 引用传递方式是在形参前加上"&"号
* ② 按引用传递是将实参的内存地址传递到形参中,所以不能直接传递值进入函数
*/
//
$num1=1;
function in_value(&$temp){
$temp+=4;
echo '函数内部temp='.$temp;
}
in_value($num);
echo "<br/>";
echo '函数调用结束后实参$num='.$num."<br/>";
//
$num=3;
function in_value1(&$temp){
$temp+=4;
echo '函数内部temp='.$temp;
}
//in_value1(3);此时程序报错ERROR /*
* 默认参数值
* 在php中定义函数时,参数可带默认值,在不传入数据时有默认值的参数直接被赋值为默认值
*/
function member($name,$sex='男'){
echo "姓名:".$name.' 性别:'.$sex."<br/>";
}
member('Jim');
member('Lily','女'); /*
* 局部变量
* 静态变量:static
* ① 全局变量也是外部变量,是在函数的外部定义的
需要在函数中使用全局变量时,可以将其声明为global
* ② 在全局范围内访问变量的第二个办法:使用php自定义的$GLOBALS数组
* ③ global与$GLOBALS的区别:
使用global的时候其实是在使用全局变量的一个引用
而使用$GLOBALS时其实是在使用全局变量本身
*/
//1 global
$temp1=1;
$temp2=2;
function sum(){
global $temp1,$temp2;//使用global关键字引用
$temp2=$temp1+$temp2;
}
sum();
echo '$temp2='.$temp2."<br/>";//$temp2=3
//2 $GLOBALS数组
$temp1=1;
$temp2=2;
function sum2(){
$GLOBALS['temp2']=$GLOBALS['temp1']+$GLOBALS['temp2'];
}
sum();
echo 'temp2='.$temp2."<br/>";
//3 global与$GLOBALS的区别
$temp1=1;
$temp2=2;
function sum3(){
global $temp1;
unset($temp1);
unset($GLOBALS['temp2']);
}
sum3();
echo '$temp1='.$temp1.'<br/>'; //$temp1=1,函数中只是删除了一个引用,原变量还在
//echo $temp2;错误,因为此时temp2已经被释放掉了 /*
* php支持在函数内部定义一个函数,或者根据程序的需要在函数内部处理后得到符合需求的函数
*/
function outside_define($define){
if($define=='add'){
function inside_define($num){
$num +=$num;
return $num;
}
}else{
function inside_define($num){
$num *=$num;
return $num;
}
}
}
outside_define('add');
echo inside_define(6)."<br/>";
//outside_define('ss');第二次执行会报错,因为函数inside_define()已经定义了 /*
* php可提供用变量存储函数名称的功能
* 当在变量后追加小括号时,php将自动解析变量的值是否为一个函数名,
* 如果是,则直接执行该函数
*/
function low($num){
$num=$num-100;
echo $num;
}
function ride($num){
$num=$num*100;
echo $num."<br/>";
}
$fn="ride";
$fn(8); /*
* 递归函数
* 定义:在一个函数的内部,含有直接或间接调用自己本身的语句
* 建议使用循环替代递归
因为递归函数将在内存中创建几个自身的副本,而且将产生几次函数调用的开销
*/
function factorial($num){
if($num==0){
return 1;
}else{
return $num * factorial($num-1);
}
}
echo factorial(4)."<br/>"; /*
* 使用和包含文件:include()与require()
* include("demo.php");require('demo.php')
* 主要区别:
* ① 当找不到被包含的文件时,require将输出错误,而include输出警告
② include和require支持相对路径和绝对路径,
如果没有指定明确路径,则在当前目录搜索,
然后查找php.ini文件include_path设置中列出的目录
③ php不支持函数重载
* 一个文件要包含两个不同的文件,而这两个文件却又包含了同一个文件,
为了解决这个问题,php提供了include_once和require_once。
他们在第一次编译的时候会包含指定的文件并记住这个文件,当脚本第二次解析到这里的时候,
他们将会通知php该文件已被包含过。这样,就防止了函数或结构重复定义的问题
*/ /*
* php模块化
* 例如:
* header.php
<html>
<head>
<title><?php echo $title;?></title>
<style>
h1{color:red;}
</style>
</head>
<body>
* footer.php
<div align="center" width="200px">This is my footer</div>
</body>
</html>
* body.php
<?php
$tile='include && require is my good friend';
require('header.php');
?>
<h1><?php echo $title;?></h1>
<?php
require('footer.php');
?>
*/
?>
</body>
</html>

【php】基础学习3的更多相关文章

  1. salesforce 零基础学习(五十二)Trigger使用篇(二)

    第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. ...

  2. 如何从零基础学习VR

    转载请声明转载地址:http://www.cnblogs.com/Rodolfo/,违者必究. 近期很多搞技术的朋友问我,如何步入VR的圈子?如何从零基础系统性的学习VR技术? 本人将于2017年1月 ...

  3. IOS基础学习-2: UIButton

    IOS基础学习-2: UIButton   UIButton是一个标准的UIControl控件,UIKit提供了一组控件:UISwitch开关.UIButton按钮.UISegmentedContro ...

  4. HTML5零基础学习Web前端需要知道哪些?

    HTML零基础学习Web前端网页制作,首先是要掌握一些常用标签的使用和他们的各个属性,常用的标签我总结了一下有以下这些: html:页面的根元素. head:页面的头部标签,是所有头部元素的容器. b ...

  5. python入门到精通[三]:基础学习(2)

    摘要:Python基础学习:列表.元组.字典.函数.序列化.正则.模块. 上一节学习了字符串.流程控制.文件及目录操作,这节介绍下列表.元组.字典.函数.序列化.正则.模块. 1.列表 python中 ...

  6. python入门到精通[二]:基础学习(1)

    摘要:Python基础学习: 注释.字符串操作.用户交互.流程控制.导入模块.文件操作.目录操作. 上一节讲了分别在windows下和linux下的环境配置,这节以linux为例学习基本语法.代码部分 ...

  7. CSS零基础学习笔记.

    酸菜记 之 CSS的零基础. 这篇是我自己从零基础学习CSS的笔记加理解总结归纳的,如有不对的地方,请留言指教, 学前了解: CSS中字母是不分大小写的; CSS文件可以使用在各种程序文件中(如:PH ...

  8. Yaf零基础学习总结5-Yaf类的自动加载

    Yaf零基础学习总结5-Yaf类的自动加载 框架的一个重要功能就是类的自动加载了,在第一个demo的时候我们就约定自己的项目的目录结构,框架就基于这个目录结构来自动加载需要的类文件. Yaf在自启动的 ...

  9. Yaf零基础学习总结4-Yaf的配置文件

    在上一节的hello yaf当中我们已经接触过了yaf的配置文件了, Yaf和用户共用一个配置空间, 也就是在Yaf_Application初始化时刻给出的配置文件中的配置. 作为区别, Yaf的配置 ...

  10. qml基础学习 Canvas画笔

    一.画布元素 自qt4.7发布qml以来,qml也在一直不断的完善中,在qt4时代使用qml时如果需要异形图,那我们只能让设计师来切图,这样的感觉是很不爽的,总感觉开发没有那么犀利.但是到了qt5这一 ...

随机推荐

  1. Grunt常见问题

    1.nodeJs 环境安装?进入官网:http://www.nodejs.org/ 根据操作系统,下载相应的安装包,直接安装即可. 2.npm 安装?a) 如果系统没有安装过Git,可以直接到http ...

  2. Android组件之自定义ContentProvider

    Android的数据存储有五种方式Shared Preferences.网络存储.文件存储.外储存储.SQLite,一般这些存储都只是在单独的一个应用程序之中达到一个数据的共享,有时候我们需要操作其他 ...

  3. DIV焦点事件详解 --【focus和tabIndex】​

    添加 tabindex='-1' 属性: 默认:获取不到焦点事件(blur) 1 <div class="wl-product" id="wl-product&qu ...

  4. 独特的deadlock(仅update语句也能造成死锁)

    最近遇到了一个看上去很奇怪,分析起来很有意思的死锁问题.这个死锁看上去难以理解.而分析过程中,又使用了很多分析SQL Server死锁的典型方法.记录下来整个分析过程还是很有意义的. 问题重现步骤: ...

  5. scala 学习笔记三 闭包

    闭包是一个函数,返回值依赖于声明在函数外部的一个或多个变量. 闭包通常来讲可以简单的认为是可以访问一个函数里面局部变量的另外一个函数. 如下面这段匿名的函数: val multiplier = (i: ...

  6. 将Tp-link无线路由器桥接到Dlink无线路由器上

    笔者家中原有两台笔记本和两台IPad,通过一台Dlink无线路由器(型号DIR-612,以下简称Dlink)上网,Dlink以PPPOE方式连到小区宽带.一直还可以. 后来为了练习Linux,启用了一 ...

  7. iOS 获取流量

    #include <arpa/inet.h> #include <net/if.h> #include <ifaddrs.h> #include <net/i ...

  8. Oracle多行记录合并自定义函数

    在oracle数据库中,进行字段合并,可以使用wm_concat(column)函数,但是在这种方法不被Oracle所推荐,因为WMSYS用户用于Workspace Manager,其函数对象可能因版 ...

  9. servlet常用操作

      servlet常用操作 CreateTime--2017年9月7日09:36:43 Author:Marydon 1.获取当前应用程序对象 需要导入: import javax.servlet.S ...

  10. JSTL fmt:formatNumber 数字、货币格式化

    <fmt:formatNumber value="12.34" pattern="#0.00" /> 12.34 保留小数点后两位数 <fmt ...