博客列表 >不要点进来,都是PHP变量基础

不要点进来,都是PHP变量基础

莫小莫
莫小莫原创
2021年01月15日 12:03:15548浏览

写在前面的话
我在上一篇提过了,我原本就是一名前端,迫于工作压力,也是初学PHP。也有动力不足的时候,那就告诫自己:对于不想做的事情,最好的办法就是快点做完。

什么是变量

  • 变量是用于存储信息的”容器”。可以给PHP变量赋予某个值(x=1)或表达式(z=x+y)
  • php语句和变量都是区分大小写的

变量的声明

  • PHP 没有声明变量的命令。变量在第一次赋值给它的时候就被创建了。
  • PHP是一门弱类型语言。(PHP 会根据变量的值,自动把变量转换为正确的数据类型。)
  • 在强类型的编程语言中,我们必须在使用变量前先声明(定义)变量的类型和名称。

变量规则

  • 正确的变量必须使用$作为起始符号
  • 变量名中不允许使用数字开始

php有效的标识,必须由以下三种字符组成:大小写的英文字母、下划线、数字,且不能以数字开始

注:

  1. // 以下的写法虽然正确但无意义
  2. $aaa = 'php.cn';
  3. $_ = 888;;
  4. $_123 = 999;

变量的输出

  • 第一次接触.输出的时候,还不太明白,特意说明下,下面两个的输出结果是一样的。

  1. <?php
  2. $txt = "W3Schools.com";
  3. echo "I love $txt!";//I love W3Schools.com!
  4. ?>
  5. <?php
  6. $txt = "W3Schools.com";
  7. echo "I love " . $txt . "!";//I love W3Schools.com!
  8. ?>

变量的数据类型

  • String(字符串)

    $name = ‘Hello world!’;

  • Integer(整型)

    $price = 3890;

  • Float(浮点型-浮点数是带小数部分的数字,或是指数形式。)

    $x = 10.365;

  • Boolean(布尔型)

    $is5G = true;
    echo gettype($is5G),’<hr>‘;

  • Array(数组)

    $arr = [‘电脑’, 8000, ‘huawei’];
    echo ‘<pre>‘.print_r($arr, true).’</pre>‘;

  • Object(对象)

    $obj = new stdClass;
    $obj->email = ‘test@qq.cn’;
    echo $obj->email . ‘<br>‘;

  • NULL(空值)

    $num = null;
    var_dump($num);

PHP变量作用域

  • 变量作用域,也叫”变量范围”, 即定义变量时的上下文环境
  • 变量作用域,通俗的说,就是变量的生效范围
  • 一个变量必定属于一个作用域, 这个作用域也包括了当前作用域中引入其它文件
  • 也有不受作用域限制的变量,例如超全局变量, 在程序中任何地方都是有定义的
  • 函数作用域: php 中只有函数可以创建作用域, 函数之外的代码全部在全局空间中
序号 作用域 描述
1 函数作用域 使用function关键字创建的作用域
2 全局作用域 函数之外的变量生效范围
  • php 中没有块作用域的概念, 这与其它编程语言不同, 请留意
  • 根据作用域不同, 变量可以分为三类:
序号 变量类型 描述
1 私有变量 函数中定义的变量
2 全局变量 函数之外定义的变量
3 超全局变量 也叫预定义变量,访问不受作用域限制
  • 超全局变量,也叫超全局数组,随系统加载,因此在所有脚本中均有定义,全局和函数中都可以访问
序号 变量名 描述
1 $GLOBALS 引用全局作用域中可用的全部变量
2 $_SERVER 服务器和执行环境信息
3 $_GET HTTP GET 请求:通过 URL 参数传递给当前脚本的变量的数组
4 $_POST HTTP POST 请求: 将变量以关联数组形式传入当前脚本
5 $_FILES HTTP 文件上传变量,保存着上传文件的全部信息
6 $_COOKIE 通过 HTTP Cookies 方式传递给当前脚本的变量的数组
7 $_SESSION 当前脚本可用 SESSION 变量的数组
8 $_REQUEST 默认情况下包含了 $_GET$_POST$_COOKIE 的数组
9 $_ENV 通过环境方式传递给当前脚本的变量的数组

  1. // 声明函数: 同时也创建一个函数作用域
  2. function getInfo() : string
  3. {
  4. // 定义了一个函数"私有变量"
  5. // 1. 方法1: global
  6. // global $siteName;
  7. // 2. 使用超全局变量
  8. $private = $GLOBALS['siteName'];
  9. // 函数中可以直接访问超全局变量
  10. echo $_SERVER['SCRIPT_NAME']. '<br>';
  11. return $private;
  12. }
  13. echo getInfo();
  14. echo $_SERVER['SCRIPT_NAME']. '<br>';

静态变量

基本常识

  • 定义在函数中的静态变量使用static修饰,并且与函数作用域绑定
  • 静态变量定义时必须初始化,且只能初始化一次,默认为0
  • 当程序执行离开函数作用域后,静态变量的值不丢失
  • 静态变量的值,可以在函数的多次调用中保持不变,即可带入下次调用中
  • 函数中静态变量遵循私有变量约束, 全局不可访问

应用场景

  • 当多次调用同一函数,且要求每次调用之间共享或保留某些变量的时候
  • 尽管全局变量也可以办到,但没必要, 采用局部静态变量更合适
  1. # 静态变量
  2. namespace ns1;
  3. function test1(): float
  4. {
  5. // 私有变量,也叫动态变量,在函数中每一次都会自动初始化
  6. // 并且无法在多次调用过程中保持不变
  7. $sum = 0;
  8. $sum = $sum + 1;
  9. return $sum;
  10. }
  11. echo test1(), '<br>';
  12. echo test1(), '<br>';
  13. echo test1(), '<br>';
  14. echo '<hr>';
  15. // 命名空间
  16. // 不同的目录下面可以有相同的文件名
  17. namespace ns2;
  18. // 全局变量
  19. $sum = 0;
  20. function test1(): float
  21. {
  22. global $sum;
  23. $sum = $sum + 1;
  24. return $sum;
  25. }
  26. echo test1(), '<br>';
  27. echo test1(), '<br>';
  28. echo test1(), '<br>';
  29. echo '<hr>';
  30. namespace ns3;
  31. function test1(): float
  32. {
  33. // 局部静态变量: 只在函数第一次调用的时候被初始化,以后不会再被更新了
  34. // 静态变量,可以理解为在函数中的"伪全局变量"
  35. // 实现函数在多次调用的过程中共享数据
  36. static $sum = 0;
  37. $sum = $sum + 1;
  38. return $sum;
  39. }
  40. echo test1(), '<br>';
  41. echo test1(), '<br>';
  42. echo test1(), '<br>';
  43. echo '<hr>';
  44. $num1 = 20;
  45. // 变量的本质是数据共享
  46. // 函数的本质是代码共享
  47. echo $num1 + 40;
  48. echo '<br>';
  49. echo $num1 + 20;
  50. echo '<br>';
  51. echo $num1 + 90;

变量过滤器

  • PHP 过滤器用于验证和过滤来自非安全来源的数据(外部数据——来自表单的输入数据、Cookies、Web services data、服务器变量、数据库查询结果)。

过滤器函数有哪些?

  • filter_var() - 通过一个指定的过滤器来过滤单一的变量
  • filter_var_array() - 通过相同的或不同的过滤器来过滤多个变量
  • filter_input - 获取一个输入变量,并对它进行过滤
  • filter_input_array - 获取多个输入变量,并通过相同的或不同的过滤器对它们进行过滤

最后

我相信你肯定也是拖着鼠标快速浏览到底部的,其实我们都一样。如盖房子,看着一块块的砖头都一样,可当房子盖成的时候,砖头就是不可或缺的重要部分。对于常量、变量的基础内容,js里面也会有,学起来还是很枯燥的,但你要相信学的每一部分内容都是为你后面的大工程在做准备。奥力给!

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议