20190116 - 变量,永远不变的改变

    前言

    2019年,我想保持写公众号的习惯,但是之前频率虽高,但不够深入的方式,也并非我所愿。今年,尝试降低数量,提高质量,让每一篇文章都言之有物。

    1024编程实验室(www.sodevel.com)2019-01-16 首次编写。

    你眼中的变量

    「变量」是任何编程语言中都必然存在的一个基础元素,语法简单、概念明确,几乎所有新人都能在短时间内掌握它。但可惜的是,几乎所有人都对「变量」没有足够的认识与重视。

    记重点:变量,是程序中唯一可变的元素,代表着极大的不确定性,也是大多数BUG的来源。

    基础概念

    先让我们重新认识一下变量。

    基本语法

    $str = 'abc';
    echo $str;

    $str 是变量名,abc 是它代表的值;之后可以通过变量名 $str 得到它对应的值,比如 echo $str,就会输出 abc


    $str = 'abc';
    $str = '123';

    之所以叫变量,是因为「变量」可以重新赋值。如上代码,$str 真正代表的值是123


    变量对于程序而言,有多重要?

    10086 客服电话,就相当于一个变量名,无论换多少个客服小姐姐,10086 这个号码永远都不变。

    数据类型

    根据  进行分类,变量有很多种数据类型。

    //整数(int)
    $var = 123;
    
    //浮点数(小数)(float)
    $var = 1.23;
    
    //字符串(string),注意和整数的区别
    $var = '123';
    
    //布尔值(bool)true = 真,false = 假
    $var = true;
    
    //数组
    $var = [1,2,3];
    
    //对象
    $var = new StdClass;
    
    //资源对象、null、回调类型,忽略不讲

    判断数据类型的最佳方法:var_dump($var)

    var_dump($var);
    //可能输出:string(3) "abc"
    • string,说明是字符串类型
    • (3),表示字符串长度为3个字节
    • abc,是具体的值

    对于数组、对象这种数据类型,var_dump() 尤其好用。

    单双引号的区别

    只要被引号包围的字符,都是字符串,但使用但双引号是有区别的。

    $a = 1;
    //原样输出
    $str1 = '输出:$a';
    //先解析 $a 变量,再输出
    $str2 = "输出:$a";

    简单来说:双引号能够识别变量,而单引号不能(还包含一些其他制表符,暂时略过)

    记重点

    • 只要看到 $ 符,就一定是变量
    • 只要是变量,就一定有数据类型
    • 只要是变量,就可以用 var_dump() 来查看它的细节

    这些也是变量

    $user = $_GET['user'];
    $pwd = $_POST['pwd'];
    $cookie = $_COOKIE['cookie'];
    //还有其他的,我就不写了,他们都是:超全局变量

    特别提醒大家,有很多同学搞不清楚 $_GET、$_POST 他们是什么,记住我们上面说的:有$符,就是变量,就可以用 var_dump($_GET) 打印它,就能看到它的数据类型。(他们都是数组)

    程序报错、出BUG怎么办?

    先用 var_dump() 打印所有变量的值,看看结果是否和你想象的一样。绝大多数情况下,BUG都是因为变量值错误。

    记重点:变量是程序中唯一可变的环节,所以也是最不可预料的环节,排错之前必须确保变量值如你所想。而var_dump($变量) 是调试变量的最佳选择。