php查漏补缺之变量(一)

1.关于普通变量 与 global变量的区别

首先  PHP 是一门松散类型的语言(Loosely Typed Language)。

不需要在设置变量之前声明该变量。

$abc= "123asdasdasd";

echo "<br>";
echo $abc;
echo "<br/>";
var_dump($abc);

$abc = 234;

echo "<br>";
echo $abc;
var_dump($abc);

输出你懂的,是123 和 234,变量就像一个盒子 ,我们把东西放进一个名为abc的盒子,盒子只能同时存在一种数据类型

疑问:上面的 $abc= "123asdasdasd";  不是同时存在 123 和 asdsdasd 这2种数据吗?

不是的 我们用var_dump打印后 发现 是string 类型,也就是字符串类型,因为在php中变量内容凡是打单引号或双引号的,都会被视作字符串去处理

下面的$abc=123;则会看作是数字

在开发过程中 如果要在中间插入代码 就要注意了 ,命名的时候,要看看前面的代码 有没这个名字 ,后面有没用到。如果有就不能起相同的名字了


关于global

<?php
$a = 1;
$b = 2;

function Sum()
{
    global $a, $b;

    $b = $a + $b;
}

Sum();
echo $b;
?>

上面这个例子 输出是3 

如果我把上面的global $a,$b注释掉会怎么样呢

请看下面例子

<?php
$a = 1;
$b = 2;

function Sum()
{
    //global $a, $b;

    $b = $a + $b;
}

Sum();
echo $b;
?>

这个例子 输出的是2

为什么呢?

这是因为$a =1, $b=2; 这里声明的只是局部变量 ,而方法体内和方法体外,是2个不同的作用域.

所以第二个例子中的$b与 方法体无关,可以看作是2个不同的变量。所以得出的是2.  然而 第一个例子 ,我们把$a 和 $b 全局声明后 ,变量就能在该方法体内和方法体外使用,sum操作的也就是$a =1, $b=2的值,所以最后得出3 ,其实依我看,在方法体内用global 声明变量,也可以看作是一个传值的过程。因为如果sum下面还有一个函数需要调用$a,$b 还需要global一次

如果还不明白作用域的问题,可以再看以下例子

<?php
$a = 1;
$b = 2;

function Sum()
{
    //global $a, $b;

    $b = 5;
	echo $b;
}
 Sum();

echo "<br/>";
echo $b;
?>

这里输出的是 5   和  2 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。