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. 如何使用SVN协调代源代码,多人同步开发

    转自linFen原文如何使用SVN协调代源代码,多人同步开发 1.什么是SVN SVN是一种版本管理系统,前身是CVS,是开源软件的基石.即使在沟通充分的情况下,多人维护同一份源代码的一定也会出现混乱 ...

  2. [NodeJS] Use Now alias for custom sub-domains

    Now is a great way to deploy your node application, but the generated URLs aren't memorable or easil ...

  3. C++中使用soap toolkit访问webService详解

    使用Visual C++开发SOAP客户端应用  使用Visual C++开发SOAP客户端应用 简介 在本篇文章中,我们将讨论如何使用Visual C++开发一个简单的SOAP客户端应用程序,我们还 ...

  4. html表单元素及表单元素详解

    原文 https://www.jianshu.com/p/b427daa8663d 大纲 1.认识表单 2.认识表单元素 3.表单元素的分类 4.表单元素——文本框 5.表单元素button 6.表单 ...

  5. 重拾c语言之动态内存分配

    动态内存分配 传统数组的缺点: 1数组长度必须事先制定,且仅仅能是长整数不能是变量 2传统形式定义的数组该数组的内存程序无法手动释放 3数组一旦定义,系统就会为该数组分配的存储空间就会一直存在直到该函 ...

  6. boost::any的一般使用方法

    01.#include <iostream>    02.#include <list>    03.#include <boost/any.hpp>    04. ...

  7. 使用URLConnection获取网页信息的基本流程 分类: H1_ANDROID 2013-10-12 23:51 3646人阅读 评论(0) 收藏

    参考自core java v2, chapter3 Networking. 注:URLConnection的子类HttpURLConnection被广泛用于Android网络客户端编程,它与apach ...

  8. 【死磕Java并发】—–J.U.C之AQS(一篇就够了)

    [隐藏目录] 1 独占式 1.1 独占式同步状态获取 1.2 独占式获取响应中断 1.3 独占式超时获取 1.4 独占式同步状态释放 2 共享式 2.1 共享式同步状态获取 2.2 共享式同步状态释放 ...

  9. Redis使用文档一

    1 Redis概述 1.1前言 Redis是一个开源.支持网络.基于内存亦可持久化的日志型.键值对存储数据库.使用ANSI C编写.并提供多种语言的API. 其开发由VMware主持,是最流行的键值对 ...

  10. Ajax的get、post和ajax提交

    JQuery.get(url,[data],[callback],[type]) []里面的参数是可选的,不是必填的. [data]:带发送的key/value数据. [callback]:载入成功时 ...