本节主要是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. 附1 rabbitmq常用命令

    1.rabbitmq的启动和停止 rabbitmq-server (前台启动) rabbitmq-server -detached(后台启动) rabbitmqctl stop(停止) 2.查看rab ...

  2. 第九章 LinkedBlockingQueue源码解析

    1.对于LinkedBlockingQueue需要掌握以下几点 创建 入队(添加元素) 出队(删除元素) 2.创建 Node节点内部类与LinkedBlockingQueue的一些属性 static ...

  3. spring cloud-给Eureka Server加上安全的用户认证

    前言 在前面的一篇文章中 spring cloud中启动Eureka Server 我们启动了Eureka Server,然后在浏览器中输入http://localhost:8761/后,直接回车,就 ...

  4. Web页面切图和CSS注意事项

    一.Asp.net中的线程池设置 在Asp.net的服务处理中,每当服务器收到一个请求,HttpRuntime将从HttpApplication池中获取一个HttpApplication对象处理此请求 ...

  5. Vue路由scrollBehavior滚动行为控制锚点

    使用前端路由,当切换到新路由时,想要页面滚到顶部,或者是保持原先的滚动位置,就像重新加载页面那样. vue-router 能做到,而且更好,它让你可以自定义路由切换时页面如何滚动. 注意: 这个功能只 ...

  6. scala 学习笔记一 列表List

    1.介绍 Scala 列表类似于数组,它们所有元素的类型都相同,但是它们也有所不同:列表是不可变的,值一旦被定义了就不能改变,其次列表 具有递归的结构(也就是链接表结构)而数组不是.. 列表的元素类型 ...

  7. Triangular numbers

    http://codeforces.com/problemset/problem/47/A Triangular numbers time limit per test 2 seconds memor ...

  8. sql-的int和varchar类型拼接的问题

    将int类型转换为varchar ,如cast(1 as varchar(10)),再进行连接set @sql =@sql+'update User set Medal='+@count+' wher ...

  9. 笔记本wifi热点设置好后,手机连上但不能上网问题

    这个问题我遇到过,我的原因是因为电脑上装有安全防护软件360的原因 解决方法是:打开360-->找到功能大全中的流量防火墙-->打开局域网防护-->关闭局域网隐身功能,立刻解决了这个 ...

  10. (转)深入浅出K-Means算法

    原文地址:http://www.csdn.net/article/2012-07-03/2807073-k-means 摘要:在数据挖掘中,K-Means算法是一种 cluster analysis ...