php学习笔记-变量的作用域

这个东西很难理解,但很重要,我觉得非常容易出错。

PHP中的变量按照作用域分为有两种,一种是global,一种是local。

函数内部声明的变量就叫local型变量,只能在函数内部被访问到。一句话,local型变量只能在函数内部定义以及引用。

函数外部声明的变量叫global型变量,只能在函数的外部访问到(除了GLOBALS)。这种渣渣也能叫global,真是名不副实啊!我记得以前学习过的语言不是这个样子的,只要是global,函数外还是函数内都可以访问到的,但php就是这么难搞。

我们看一个local的例子。

 1 <?php
 2
 3 $name = ‘hanmeimei‘;
 4 function getName(){
 5     echo $name;
 6 }
 7
 8 getName();
 9
10 ?>

运行结果显示$name这个变量没有被定义。是因为php解析器没有在getName函数内部找到$name这个变量的定义。为啥不去外面找去啊,如果没有特别的声明,函数内部引用到的变量只会在函数内部去找它的定义。

那怎么才能访问到外面的name呢?

我们看一个global的例子。

1 <?php
2 $name = "hanmeimei";
3 function getName(){
4     global $name;
5     echo $name;
6 }
7 getName();
8 ?>

这回就没有错误提示了,为什么呢?是因为在getName函数内部有一句global $name,它的意思是告诉PHP解析器$name这个变量的定义你得在函数外面找,然后就找到了$name的值是hanmeimei。变量前面的global使得$name这个global型变量的作用范围扩大到了getName函数内部。

前面有句话:函数外部声明的变量叫global型变量,只能在函数的外部访问到,这是什么意思?

1 <?php
2 $name = ‘hanmeimei‘;
3 echo $name;
4 ?>

原文地址:https://www.cnblogs.com/yfish/p/8452343.html

时间: 2024-08-29 05:05:47

php学习笔记-变量的作用域的相关文章

R语言学习笔记-变量的作用域

R语言是如何将变量值和变量绑定的 在r语言中,当前的 workspace就是global enviroment,当输入变量名时,首先会在global enviroment中搜索该变量,如有,则将它显示出来. 第二步,如在global enviroment中没有找到该变量民,则搜索search list中的各个包,search list 中的内容可以用search()得到 如果用户使用library()load了一个package ,则这个package将在search list中处于第二的位置

Python学习之变量的作用域

学习地址:http://www.jianshu.com/p/17a9d8584530 1.变量作用域LEGB 1.1变量的作用域 在Python程序中创建.改变.查找变量名时,都是在一个保存变量名的空间中进行,我们称之为命名空间,也被称之为作用域.python的作用域是静态的,在源代码中变量名被赋值的位置决定了该变量能被访问的范围.即Python变量的作用域由变量所在源代码中的位置决定. 1.2高级语言对数据类型的使用过程 一般的高级语言在使用变量时,都会有下面4个过程.当然在不同的语言中也会有

js学习笔记01-函数,作用域,闭包

${var} //变量的占位符, ${}里边 依旧是js,字符串拼接 var str1 = "Hello"; var str2 = "World"; console.log("say: "+str1+" "+str2+"!"); console.log(`say: ${str1} ${str2}!`); 函数function 像处理(字符串.数组或数字)一样来处理函数1)存储在变量中.2)从一个函数返回.3

Sass学习笔记 -- 变量及变量作用域历史遗留问题

sass有两种后缀名文件: 一种后缀名为sass,写选择器时不能使用大括号和分号 一种后缀名为scss,使用大括号和分号 //后缀名为sass的语法,不能出现大括号和分号 $highlight-color: #abcdef .selected   border: 1px $highlight-color solid    //后缀名为scss的语法,跟css一样,需要大括号和分号 $highlight-color: #abcdef; .selected{   border:1px solid $

Python学习笔记 | 变量 + 引用 + 拷贝 + 作用域

在Python中,变量是没有类型的,在使用变量的时候,不需要提前声明,只需要给这个变量赋值即可.但是,当用变量的时候,必须要给这个变量赋值:如果只写一个变量,而没有赋值,那么Python认为这个变量没有定义(not defined). 一.变量和对象 1. 可变对象和不可变对象 在Python中,对象分为两种:可变对象和不可变对象,不可变对象包括int,float,long,str,tuple等,可变对象包括list,set,dict等.需要注意的是:这里说的不可变指的是值的不可变.对于不可变类

JavaScript系统学习小结——变量、作用域和内存问题

趁着写完小论文还未彻底消散的学习氛围,开始着重巩固自己JavaScript的基础知识,为秋招做最基本的准备. 变量:Js的变量可能保存两种不同数据类型的值:基本类型值和引用类型值. 基本类型包括:Undefined,Null,Boolean,Number和String,基本类型是按值访问方式: 引用类型的值是对象,是按引用方式引用: 在复制变量值时,两种数据类型的差异表现在: 复制基本类型值后,创建的是这个值的副本,彼此两个变量可以参与任何操作而不会互相影响: 复制引用类型值后,两个变量实际上将

《JavaScript高级程序设计》读书笔记 ---变量、作用域和内存问题小结

JavaScript 变量可以用来保存两种类型的值:基本类型值和引用类型值.基本类型的值源自以下5种基本数据类型:Undefined.Null.Boolean.Number 和String.基本类型值和引用类型值具有以下特点:? 基本类型值在内存中占据固定大小的空间,因此被保存在栈内存中:? 从一个变量向另一个变量复制基本类型的值,会创建这个值的一个副本:? 引用类型的值是对象,保存在堆内存中:? 包含引用类型值的变量实际上包含的并不是对象本身,而是一个指向该对象的指针:? 从一个变量向另一个变

aardio学习笔记-变量与常量

变    量 定义:在程序运行过程中,用来存储数据值并且其值能被改变的对象称为变量. 要求: 1.变量名开始字符不能为数字.2.变量名包含中文时,中文字符前面不能有字母或数字.3.可以使用美元符号($)作为变量名或变量名的第一个字符.4.可以使用下划线作为变量名或常量名的首字符,当下划线作为首字符时表示常量,单个下划线表示变量. 例如: _abc 表示常量,_abc=10 这样赋值之后,不可修改.但是如果仅一个"_",是作为匿名变量占位符. 使用位置:在第一次使用局部变量之前定义该变量

Python学习笔记---变量与数据类型

Python中的变量与内置数据类型 本文只是我在慕课网学习<Python入门>这门课程时,摘录.整理的一些对自己比较重要的语法与提示.九成以上的内容以及所有代码示例,均摘抄自慕课网.由于我本人有一定C/C++语言基础,而本文主要供我自己复习使用,所以我偏向于摘录一些Python和C/C++之间的差异之处,可能造成本文语义上不一定连贯,建议有学习需求的读者直接前往慕课网学习该课程(链接:http://www.imooc.com/learn/177)或是查看该门课程授课教师廖雪峰先生官方网站所给出