1、函数声明

<?php

	/**
* function 函数名(參数1, 參数2.... ){
* 函数体;
* 返回值;
* }
*/ $sum = sum(3, 4);
echo $sum; function sum($x, $y){
$sum = 0;
$sum = $x * $x + $y + $y;
return $sum;
}
?>

2、变量的范围

局部变量: 在函数中声明的变量就是局部变量, 仅仅能在自己的函数内部使用

全局变量: 在函数外声明的变量就是全局变量, 在变量声明以后直到整个脚本结束前都能够使用, 包含在函数中和 { } 中都可使用

2.1 知识点: 我们无法分辨出PHP的变量是声明还是使用

<?php
$a = 10;
function demo($a){
$a += 10;
echo $a . '<br>';
}
demo($a);
echo $a;
// 结果: 20, 10
// PHP的变量分不出 $a 是声明还是使用
? >

2.2 知识点: 函数中使用全局变量必须使用globalkeyword, 在声明global之后的变量才是全局的变量

<?php
$a = 10; function demo() {
global $a;
$a += 10;
echo $a . " demo <br>";
} function test() {
global $a;
$a += 5;
echo $a . "test <br>";
} echo $a . " ----<br>"; // 10 ----
demo(); // 20 demo
echo $a . " !!!!<br>"; // 20 !!!!
demo(); // 30 demo
echo $a . " @@@@<br>"; // 30 @@@@
test(); // 35 test
echo $a . " ####<br>"; // 35 ####
? >

静态变量: 仅仅能声明在函数中(类中), 不能在全局声明, 变量前使用statickeyword修饰

2.3 知识点: 静态变量在静态代码块中存储, 它的值能够一个函数多次调用之间共享, 但仅仅在第一次调用函数时声明到内存

以后再调用时就不再声明而直接使用(和Java类似)。

<?php
function test(){
static $a = 0;
$a++;
echo $a."<br>";
} test(); // 1
test(); // 2
test(); // 3
?>

3、变量函数

事实上这个和JS又非常类似, 比如: 定义$var = hello, 下次使用$var()时就将寻找与变量值同名的函数hello()

<?

php
function one($a, $b){
return $a + $b;
} function two($a, $b){
return $a * $a + $b * $b;
} function three($a, $b){
return $a * $a * $a + $b * $b * $b;
} //$var = one;
//$var = "two";
$var = three; echo "结果:".$var(3, 4)."<br>"; // 91
?>

4、系统函数

4.1 常规函数  

     bool copy (string source, string dest)



4.2 带有mixed, mixed表示能够传不论什么类型的数据

      bool chown (string filename, mixed user)

4.3 带有&參数的函数, 表示引用赋值, 这个參数不能传值, 仅仅能传一个变量。然后函数将变量的值改变。

我们在使用这个变量时,值也是变化的(和Java中传引用又是一样的)

bool arsort (array &array [, int sort_flags])

<?php
$arr=array(1, 9, 5, 8, 3, 4);
sort($arr);
print_r($arr);
?>

4.4 默认函数, 带有[]的函数, 表示这个參数是可选的,假设你传值了就使用你传的值,假设没有传值则使用默认值

     bool arsort (array &array [, int sort_flags])

<?php
function demo($a=1, $b=20, $c){
echo "### $a ### $b ### $c ###<br>";
}
demo(8,9);
?>

4.5 带有...的參数函数。 ...表示能够传随意多个參数

      int array_unshift (array &array, mixed var [, mixed ...])

<?php
function demo(){
$sum = 0;
for($i = 0; $i < func_num_args(); $i++){
$sum += func_get_arg($i);
}
return $sum;
} echo demo(1, 2, 3, 4, 5, 6, 7, 8, 9);
?>

4.6 回调函数 带有callback,  就是调用这个函数时须要我们传一个函数进来(函数名,函数名字串)

      array array_filter (array input [, callback callback])

<?php
function demo($n){
if($n % 2== 0){
return true;
}else{
return false;
}
} $a = array(1, 2, -3, 4, -5, 6, -7, 8, 9);
print_r(array_filter($a, demo)); // Array ( [1] => 2 [3] => 4 [5] => 6 [7] => 8 )
? >

5、内部函数

php能够在函数内部再声明函数, 目的就是在函数的内部调用以帮助外部函数完毕一些子功能.

<?php
function score($php, $java) {
function php($php) {
if ($php > 60)
return "及格";
else
return "不及格";
} function java($java) {
if ($java > 60)
return "及格";
else
return "不及格";
} $total = $php + $java . "分";
$agv = $total / 2 . "分";
echo "你的php成绩是 {$php} 分, " . php($php) . "<br>"; // 调用内部函数 php()
echo "你的java成绩是 {$java} 分, " . java($java) . "<br>"; // 调用内部函数 java()
echo "你的总分是: {$total} <br>";
echo "你的平均分是:{$agv} <br>";
} score(50, 90);
? >

6、递归函数

所谓的递归函数就是在自己的内部调用自己的函数

<?php
function demo($num){
echo $num."<br>";
if($num > 0){
demo($num - 1); // 自己调用自己
}else{
echo "--------------------<br>";
} echo $num."<br>";
} demo(3); /*
3
2
1
0
--------------------
0
1
2
3
*/
?>

7、重用函数

所谓的重用函数事实上就是把php, html, txt等文件或者其它文件include进来

require:    用于静态包括(如文件头, 文件尾等固定的东西)

include:    用于动态包括(不确定的文件名称)

require_once: (仅仅包括一次, 不存在函数名冲突问题, 但性能没require高)

include_once: (同上)

用法: include "config.inc.php";     include("config.inc.php")

<?php
include_once "test.inc.php";
echo $a."<br>";
test(); /*
10
##############
*/
?>

test.inc.php

<?php
$a=10; function test(){
echo "##############<br>";
}
?>

版权声明:本文博主原创文章。博客,未经同意不得转载。

阐述php(五岁以下儿童) 注意事项和使用功能的更多相关文章

  1. (五岁以下儿童)NS3样本演示:桥模块演示样品csma-bridge.cc凝视程序

    (五岁以下儿童)NS3:桥模块演示样品csma-bridge.cc凝视程序 1.Ns3 bridge模csma-bridge.cc演示示例程序的目光 // Network topology // // ...

  2. linux下一个Oracle11g RAC建立(五岁以下儿童)

    linux下一个Oracle11g RAC建立(五岁以下儿童) 四.建立主机之间的信任关系(node1.node2) 建立节点之间oracle .grid 用户之间的信任(通过ssh 建立公钥和私钥) ...

  3. python学习笔记(五岁以下儿童)深深浅浅的副本复印件,文件和文件夹

    python学习笔记(五岁以下儿童) 深拷贝-浅拷贝 浅拷贝就是对引用的拷贝(仅仅拷贝父对象) 深拷贝就是对对象的资源拷贝 普通的复制,仅仅是添加了一个指向同一个地址空间的"标签" ...

  4. PE文件结构(五岁以下儿童)基地搬迁

    PE文件结构(五岁以下儿童) 參考 书:<加密与解密> 视频:小甲鱼 解密系列 视频 基址重定位 链接器生成一个PE文件时,它会如果程序被装入时使用的默认ImageBase基地址(VC默认 ...

  5. 阐述linux IPC(五岁以下儿童):system V共享内存

    [版权声明:尊重原创.转载请保留源:blog.csdn.net/shallnet 要么 .../gentleliu,文章学习交流,不用于商业用途]         system V共享内存和posix ...

  6. ExtJs4得知(五岁以下儿童)主要的Ext分类

    Ext类是ExtJs最常见的.最基本的类,它是一个全局对象,它封装了全班.辛格尔顿和 Sencha 该方法提供了一种有用的库. 嵌套在该命名空间中一个较低的水平最用户界面组件. 但是提供了很多有用的功 ...

  7. Scrapy研究和探索(五岁以下儿童)——爬行自己主动多页(抢别人博客所有文章)

    首先.在教程(二)(http://blog.csdn.net/u012150179/article/details/32911511)中,研究的是爬取单个网页的方法.在教程(三)(http://blo ...

  8. nagios二次开发(五岁以下儿童)---nagios和nagiosql关系

    基于nagios和nagiosql理解.这将是这两个梳理比较粗糙的简单关系,有关详细信息,请参阅下面的图如:      从上面的关系图中能够看出,nagios与nagiosql共享了主机.主机组.服务 ...

  9. 开玩笑Web它servlet(五岁以下儿童)---- 如何解决servlet线程安全问题

    servlet默认值是安全线的存在,但说白,servlet安全线实际上是一个多线程线程安全问题.因为servlet它正好是一个多线程的安全问题出现. 每次通过浏览器http同意提交请求,将一个实例se ...

随机推荐

  1. 高级Java工程师必备 ----- 深入分析 Java IO (三)

    概述 Java IO即Java 输入输出系统.不管我们编写何种应用,都难免和各种输入输出相关的媒介打交道,其实和媒介进行IO的过程是十分复杂的,这要考虑的因素特别多,比如我们要考虑和哪种媒介进行IO( ...

  2. 一次性能优化将filter转换

    有一条SQL性能有问题,在运行计划中发现filter.遇到它要小心了,类似于nestloop.我曾经的blog对它有研究探索运行计划中filter的原理.用exists极易引起filter. 优化前: ...

  3. hive SQL优化之distribute by和sort by

    近期在优化hiveSQL. 以下是一段排序,分组后取每组第一行记录的SQL INSERT OVERWRITE TABLE t_wa_funnel_distinct_temp PARTITION (pt ...

  4. WCF REST 基础教程

    概述 Representational State Transfer(REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格. 因此REST是设计风格而不是标准,R ...

  5. php spl标准库简介(SPL是Standard PHP Library(PHP标准库)(直接看代码实例,特别方便)

    php spl标准库简介(SPL是Standard PHP Library(PHP标准库)(直接看代码实例,特别方便) 一.总结 直接看代码实例,特别方便易懂 thinkphp控制器利眠宁不支持(说明 ...

  6. Tidhy

    JavaBean.hbm.xml(hibernate配置方面的): <?xml version="1.0" encoding="UTF-8"?> & ...

  7. Spring boot(三) springboot 定时任务

    这个不多说,springboot 定时任务非常简单就可以实现了. 30s运行一次 , @Scheduled(cron="0,30 * * * * ?") 通过这个控制定时时间 cr ...

  8. 使用Perl处理Excel之DMA映射

    使用Perl处理Excel之DMA映射 功能 通道处理,将各个通道的外设映射到通道上 外设ack信号处理 脚本执行情况 顶层Perl脚本(dma_parse.pl) 将上述两个功能脚本整合,便于调用 ...

  9. js中ajax连接服务器open函数的另外两个默认参数get请求和默认异步(open的post方式send函数带参数)(post请求和get请求区别:get:快、简单 post:安全,量大,不缓存)(服务器同步和异步区别:同步:等待服务器响应当中浏览器不能做别的事情)(ajax和jquery一起用的)

    js中ajax连接服务器open函数的另外两个默认参数get请求和默认异步(open的post方式send函数带参数)(post请求和get请求区别:get:快.简单 post:安全,量大,不缓存)( ...

  10. Android 如何Android中自定义Navigationbar

    在如何控制Android系统中NavigationBar 的显示与隐藏文章里简要地介绍了Navigationbar的背景知识, NavigationBar的代码是放在... rameworksasep ...