<?php
/**
* PHP变量的范围
* 1.局部变量(内部变量)
* 在函数内部声明的变量,作用域仅限于函数内部,参数也是局部变量;执行完毕后函数内部的变量都被释放
* 若需要使用函数内的变量值,可以使用return返回
* 局部变量(按存储方式分):
* 1.动态存储
* 自动分配存储空间,函数调用后自动释放
* 2.静态存储(静态变量)
* 函数执行完成后并不消失,依然保存在内存中,在第一次被调用时初始化
* 在所有对该函数的调用之间共享,接续前次的结果继续运算
* 声明 关键字 static
* 2.全局变量(外部变量)
* 在函数外定义的变量,作用域从变量定义处开始,到程序文件末尾
* PHP中,函数可以视为独立的代码段,在函数中无法直接调用全局变量
* 若要在函数中使用全局变量,必须使用 global 关键字定义目标变量,告诉函数体此变量为全局变量;
* 除了global,还可以使用特殊的PHP自定义$GLOBALES数组, 超全局变量
* 在GLOBALES数组中,每个变量是一个数组,键名对应变量名,值对应变量的内容
*/
header('content-type:text/html;charset=utf8');
// 定义全局变量
$c = 3;
$d = 4;
function variable($a){
global $d;
static $e = 5;
// 定义局部变量
$b=2;
// 函数内部:1+2 =3
echo "函数内部:$a+$b =" .($a+$b);
echo '<hr>';
// 报错 ,变量c未定义
echo $c;
// 输出4
echo $d;
// 输出3
echo $GLOBALS['c'];
// 不会释放,保存在静态内存中
echo $e;
$e++;
}
// $e = 5
variable(1);
// 报错 变量a,b未定义 函数外:+ =0
echo "函数外:$a+$b =" .($a+$b);
// $e = 6
variable(1);

PHP函数总结 (三)的更多相关文章

  1. C语言中可变参数的函数(三个点,“...”)

    C语言中可变参数的函数(三个点,“...”) 本文主要介绍va_start和va_end的使用及原理. 在以前的一篇帖子Format MessageBox 详解中曾使用到va_start和va_end ...

  2. Javascript中的函数(三)

    一:概述 函数是进行模块化程序设计的基础,编写复杂的Ajax应用程序,必须对函数有更深入的了解.JavaScript中的函数不同于其他的语言,每个函数都是作为一个对象被维护和运行的.通过函数对象的性质 ...

  3. Sql函数的三种写法

    以前复制的创建sql函数比较乱,现在将我自己项目中的三种sql函数做下对比,一目了然: (1)表值函数——方法一:直接创建临时表,并返回临时表.优点:函数体中间可以直接申明临时变量,并做各种逻辑处理, ...

  4. JavaScript创建函数的三种方式

    ㈠函数(function) ⑴函数也是一个对象 ⑵函数中可以封装一些功能(代码),在需要时可以执行这些功能(代码) ⑶函数中可以保存一些代码在需要的时候调用 ⑷使用typeof检查一个函数对象时,会返 ...

  5. PHP中的文件系统函数(三)

    总算来到我们最关心的部分了,也就是 f 相关函数的操作.基本上大部分的文件操作都是以今天学习的这些内容为基础的,话不多说,我们就一个一个的来学习学习吧. 文件读取 文件的读取其实非常简单,fopen( ...

  6. 关于 printf() 函数的三张表格

    函数原型: printf(Control-String, item1, item2, ...); 表一  转换说明符及作为结果的打印输出 转 换 说 明 输    出 %a 浮点数.十六进制数字和p- ...

  7. 利用Objective-C运行时hook函数的三种方法

    版权声明:转载请注明出处:http://blog.csdn.net/hursing 方法一,hook已有公开头文件的类: 首先写一个Utility函数: #import <objc/runtim ...

  8. js 函数定义三种方式

    <p>Js 函数定义的三种方式:</p> <br> <p>方式一:function</p> <script type="te ...

  9. Javascript 基础--JS函数(三)

    一.基本概念:未完成某一个功能的代码(语句,指令)的集合. 二.函数的调用方式: 2.1.函数名(传递参数1,传递参数2)   基本语法 function 函数名(参数列表){ //代码; retur ...

  10. epoll函数及三种I/O复用函数的对比

    epoll函数 #include <sys/epoll.h>int epoll_create(int size)int epoll_ctl(int epfd, int op, int fd ...

随机推荐

  1. python练习题-简单方法判断三个数能否组成三角形

    python简单方法判断三个数能否组成三角形 #encoding=utf-8 import math while True: str=raw_input("please input thre ...

  2. 2018-2019-2 20165209 《网络对抗技术》Exp1:PC平台逆向破解

    2018-2019-2 20165209 <网络对抗技术>Exp1:PC平台逆向破解 1 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件 ...

  3. JDBC报错记录

    用JDBC连接oracle时 有如下问题: 问题一.java.lang.ClassNotFoundException: oracle.jdbc.driver.oracledriver 解决: 可以在环 ...

  4. .net Core 中将原MVC中的 MvcHtmlString转换

    public static IHtmlContent CustomLabelFor<TModel, TProperty>(this IHtmlHelper helper, Expressi ...

  5. luogu P2680 运输计划 65分做法

    临近\(noip,AK\)不太现实,暴力才是王道,大佬无视 这里只介绍\(65\)分做法 ① \(m==1\) 的情况 很明显 就一条路径,当然要贪心选着一条路径路上的最大的边喽 傻逼分\(get 2 ...

  6. JavaScript 开闭原则OCP

    代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3. ...

  7. 委托的begininvoke

    http://blog.csdn.net/cml2030/article/details/2172854 http://blog.163.com/weizhiyong_111/blog/static/ ...

  8. The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path 解决方法

    项目忽然出现 The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Pat ...

  9. FPGA 概述

    概述 verilog HDL Verilog HDL基本结构 1 Verilog HDL程序是由模块构成的.每个模块嵌套在module和endmodule声明语句中. 2 每个Verilog HDL源 ...

  10. centos6下通用二进制格式安装MySQL过程

    1.首先确保主机的MySQL没有运行 #ss -tnl  //查看有没有80端口 或者 #service mysqld stop 2.添加mysql用户和组 #id mysql  //首先查看mysq ...