Home >php教程 >php手册 >php查漏补缺之变量(一)

php查漏补缺之变量(一)

WBOY
WBOYOriginal
2016-06-06 20:00:061197browse

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); 输出你

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 
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn