`
moqiang02
  • 浏览: 530589 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
文章分类
社区版块
存档分类
最新评论

php函数内不能访问函数外的变量原因

 
阅读更多

执行如下代码:

$i = 10;
function my(){
 echo $i;
 }
my();

xdebug显示是:Undefined variable

以前也知道有这个问题存在,即函数内部不可以访问外部的变量,如果想访问,如上,则在函数内部加 global $i(或者写成:$GLOBALS['i'])。

今天看到http://phpbook.sinaapp.com/ch2.4.html,才知道原来是这么回事:

用户在php中定义的变量都可以在一个HashTable中找到,当php中定义一个变量,内核会自动的把它的信息存储到一个用HashTable实现的符号表里。

当用户在php中调用一个函数或者类的方法时,内核会创建一个新的符号表并激活之,这也是为什么我们无法在函数中使用函数外定义的变量的原因(因为他们分属两个符号表,一个当前作用域,一个全局作用域的),如果不是在一个函数里,则全局作用域的符号表处于激活状态。

分享到:
评论

相关推荐

    php变量缓存到文件的函数

    php变量缓存到文件的函数 SAVE函数有用哦。php变量缓存到文件的函数 SAVE函数有用哦。php变量缓存到文件的函数 SAVE函数有用哦。php变量缓存到文件的函数 SAVE函数有用哦。php变量缓存到文件的函数 SAVE函数有用哦。...

    PHP函数 -函数的高级用法.ppt

    * PHP函数 -----函数的高级用法 课程内容 可变函数 引用函数返回值 函数的嵌套调用 函数的递归调用 回调函数 一、可变函数 一个变量的值可以为另一个变量的名称。此外,一个变量的值还可以是一个函数的名称,这就是...

    PHP函数 -变量的作用域.ppt

    * PHP函数 -----变量的作用域 课程内容 局部变量 全局变量 静态变量 变量的作用域 变量需要先定义后使用,但这并不意味着变量定义后就可以随便使用,只有在它的作用范围中才可以被使用,这个作用范围称为变量的作用...

    php4中文函数手册

    动态载入函数库 网路函数库 变量函数库 文件系统函数库 PDF函数库 Vmailmgr函数库 FDF函数库 信用卡交易函数库 WDDX函数库 FTP函数库 PHP选项与资讯函数库 XML函数库 GNU gettext函数库 程式执行函数库 YP/NIS...

    超全的php检测变量类型函数

    超全的php检测变量类型函数,超全的php检测变量类型函数,超全的php检测变量类型函数

    PHP函数集 PHP手册

    动态载入函数库 网路函数库 变量函数库 文件系统函数库 PDF函数库 Vmailmgr函数库 FDF函数库 信用卡交易函数库 WDDX函数库 FTP函数库 PHP选项与资讯函数库 XML函数库 GNU gettext函数库 程式执行函数库 YP/NIS...

    php函数手册(中文chm)

    动态载入函数库 网路函数库 变量函数库 文件系统函数库 PDF函数库 Vmailmgr函数库 FDF函数库 信用卡交易函数库 WDDX函数库 FTP函数库 PHP选项与资讯函数库 XML函数库 GNU gettext函数库 程式执行函数库 YP/NIS...

    PHP函数参考手册大全

    Variable 变量函数 CL. Verisign Payflow Pro Functions CLI. vpopmail Functions CLII. W32api 函数 CLIII. WDDX Functions CLIV. xattr Functions CLV. xdiff Functions CLVI. XML 语法解析函数 CLVII. XML-RPC ...

    PHP闭包函数传参及使用外部变量的方法

    本文实例讲述了PHP闭包函数传参及使用外部变量的方法。分享给大家供大家参考,具体如下: 在Laravel控制器写两个方法,一个是在内部创建一个闭包函数,一个是执行传过来的闭包函数,测试闭包的写法,use使用外部变量...

    BUUCTF-Web-Mark loves cat变量函数覆盖

    经常导致变量覆盖漏洞场景有:$使用不当,extract()函数使用不当,parse_str()函数使用不当,import_request_variables()使用不当,开启了全局变量注册等。 全局变量覆盖 extarct()变量覆盖 遍历初始化变量 ...

    js函数内变量的作用域分析

    本文实例分析了js函数内变量的作用域。分享给大家供大家参考。具体分析如下: 先看一个函数实例: 代码如下:<html> <head> </head> <body> [removed] var a = 5; var c = 3; function t(){...

    PHP获取当前url路径的函数及服务器变量[定义].pdf

    PHP获取当前url路径的函数及服务器变量[定义].pdf

    PHP程序设计:PHP函数.ppt

    * PHP函数 -----函数的基本用法 课程内容 函数的定义 函数的调用 函数的参数 函数的返回值 一、函数的定义 在PHP中,函数就是将重复使用的功能写在一个独立的代码块中,在需要时进行单独调用,其语法格式如下: (1...

    PHP 使用技巧集 PHP操作mysql的函数

    如何判断PHP中的变量值是否为空或变量是否已初使化 如何使用PHP中的日期和时间函数 如何使用PHP中的正则表达式 如何使用PHP中的字符串函数 如何用PHP实现文件上载(实例2) 如何用PHP实现网页动态跳转 如何用 PHP ...

    PHP 魔术变量和魔术函数详解_.docx

    PHP 魔术变量和魔术函数详解_.docx

    php圣经 php bible

    变量处理函数库 Vmailmgr 邮件处理函数库 WDDX 函数库 压缩文件函数库 XML 解析函数库 Session 函数库 GNU 记录函数库 FTP 文件传输函数库 MCAL 模块日历存取函数库 第五章 范例程序 访客计数器 用户认证...

    PHP获取当前url路径的函数及服务器变量.pdf

    PHP获取当前url路径的函数及服务器变量.pdf

    PHP获取当前url路径的函数及服务器变量QUERY_STRING、REQUEST_URI

    PHP获取当前url路径的函数及服务器变量:QUERY_STRING、REQUEST_URI、SCRIPT_NAME、PHP_SELF

Global site tag (gtag.js) - Google Analytics