zoukankan      html  css  js  c++  java
  • 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 ?>
  • 相关阅读:
    redis数据结构详解之Hash(四)
    Redis数据结构详解之Set(三)
    Redis数据结构详解之List(二)
    Redis数据结构详解(一)
    memcached安装及.NET中的Memcached.ClientLibrary使用详解
    Quartz.net开源作业调度框架使用详解
    quartz.net 时间表达式----- Cron表达式详解
    MongoDB高级查询详细
    MongoDB下载安装与简单增删改查
    MSSQLSERVER添加c# clr程序集的使用方法
  • 原文地址:https://www.cnblogs.com/yfish/p/8452343.html
Copyright © 2011-2022 走看看