zoukankan      html  css  js  c++  java
  • PHP学习笔记-2

    PHP 是一门弱类型语言: 

    在上面的实例中,我们注意到,不必向 PHP 声明该变量的数据类型。(跟Javascript很像啊!)

    PHP 会根据变量的值,自动把变量转换为正确的数据类型。

    在强类型的编程语言中,我们必须在使用变量前先声明(定义)变量的类型和名称。(比如C语言)

    PHP 变量作用域:

    PHP 有四种不同的变量作用域:

    • local(翻译---当地的;局部的;地方性的;乡土的)
    • global(翻译---全球的;总体的;球形的)
    • static(翻译---静态的;静电的;静力的)
    • parameter(翻译---参数;系数;参量)   

    其实根据翻译就能大致的知道这几种作用域的范围了。看一个例子:

     1 <?php 
     2 $x=5; // 全局变量 
     3 
     4 function myTest() 
     5 { 
     6     $y=10; // 局部变量 
     7     echo "<p>测试函数内变量:<p>"; 
     8     echo "变量 x 为: $x"; 
     9     echo "<br>"; 
    10     echo "变量 y 为: $y"; 
    11 }  
    12 
    13 myTest(); 
    14 
    15 echo "<p>测试函数外变量:<p>"; 
    16 echo "变量 x 为: $x"; 
    17 echo "<br>"; 
    18 echo "变量 y 为: $y"; 
    19 ?>
    View Code

    先看运行结果:

    注意到这里,函数内部不能访问全局的变量$x,函数外部不能函数内部的变量。前面一条就有点说不过去了,既然是全局变量为什么不能访问呢?这里就涉及到了咱们上边说的php的四种不同的变量作用域。

    要是想在函数内部访问到全局变量需要在函数的内部声明:global $x;

    再看一段代码:

     1 <?php
     2 $x=5;
     3 $y=10;
     4 
     5 function myTest()
     6 {
     7 global $x,$y;
     8 $y=$x+$y;
     9 }
    10 
    11 myTest();
    12 echo $y; // 输出 15
    13 ?>
    View Code

    这样就可以正确的访问全局变量了。这里我们要解释一下为什么不声明是访问不到的:PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。 index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量。

    所以上面的代码其实可以这样写:

     1 <?php
     2 $x=5;
     3 $y=10;
     4 
     5 function myTest()
     6 {
     7 $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
     8 } 
     9 
    10 myTest();
    11 echo $y;
    12 ?>
    View Code

    Static 作用域

    当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。要做到这一点,请在您第一次声明变量时使用 static 关键字:

     1 <?php
     2 
     3 function myTest()
     4 {
     5 static $x=0;
     6 echo $x;
     7 $x++;
     8 }
     9 
    10 myTest();
    11 myTest();
    12 myTest();
    13 
    14 ?>
    View Code

    然后,每次调用该函数时,该变量将会保留着函数前一次被调用时的值。

    注释:该变量仍然是函数的局部变量。

    Parameter参数作用域

    参数是通过调用代码将值传递给函数的局部变量。(跟JavaScript的参数差不多)

    参数是在参数列表中声明的,作为函数声明的一部分,先看一段代码就能理解了:

    1 <?php
    2 function myTest($x)
    3 {
    4     echo $x;
    5 }
    6 myTest(5);
    7 ?>
    View Code

      其实PHP的参数和JS的差不多。如果能很好地理解JS中的作用域,其实PHP的也就那么回事。

  • 相关阅读:
    numpy.random.seed()方法
    TensorFlow问题“The TensorFlow library wasn't compiled to use SSE instructions, but these are available on your machine and could speed up CPU computations.”
    TensorFlow实现Softmax Regression识别手写数字中"TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败”问题
    关于from nltk.book import * 报错解决方法
    LeetCode---Container With Most Water(11)
    如何解决python中使用flask时遇到的markupsafe._compat包缺失的问题
    解决python中flask_sqlalchemy包安装失败的问题
    高级软件工程第二次作业(四则运算生成器)
    Truncate有外键约束的表
    OSharp DbContent初始化分析
  • 原文地址:https://www.cnblogs.com/daniao11417/p/6638490.html
Copyright © 2011-2022 走看看