你眼中的变量

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

PHP - 变量,永远不变的改变-不问归期_

记重点:变量,是程序中唯一可变的元素,代表着极大的不确定性,也是大多数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($变量) 是调试变量的最佳选择。

文章内容来自:1024编程实验室(www.sodevel.com)2019-01-16 首次编写。