PHP开发基础教程之变量

变量是用于存储信息的"容器":

见下面的例子

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php
$x=5;
$y=6;
$z=$x+$y;
echo $z;
?>
</body>
</html>



一、与代数类似

x=5

y=6

z=x+y

  • 在代数中我们使用字母(比如 x)来保存值(比如 5)。

  • 从上面的表达式 z=x+y,我们能够计算出 z 的值是 11。

  •  在 PHP 中,这三个字母被称为变量。

  • 注:请把变量视为存储数据的容器。


二、PHP变量

正如代数,PHP 变量可用于保存值(x=5)和表达式(z=x+y)。

变量的名称可以很短(比如 x 和 y),也可以取更具描述性的名称(比如 number、total_volume)。


三、PHP变量规则

  • 变量以 $ 符号开头,其后是变量的名称

  •  变量名称必须以字母或下划线开头

  •  变量名称不能以数字开头

  • 变量名称只能包含字母数字字符和下划线(A-z、0-9 以及 _)

  • 变量名称对大小写敏感($y 与 $Y 是两个不同的变量)

注:PHP 变量名称对大小写敏感!

实例:

<?php
//site = 'Hello';     // 非法变量名;以数字开头
$_4site = 'World';    // 合法变量名;以下划线开头
$i小明is = 'haha';  // 合法变量名;可以用中文
?>



四、创建PHP变量

PHP 没有声明变量的命令。

变量在您第一次赋值给它的时候被创建:

<?php
$txt="Hello world!";
$x=5;
$y=10.5;
?>

在上面的语句执行中,变量 txt 将保存值 Hello world!,且变量 x 将保存值 5。

注:当您赋一个文本值给变量时,请在文本值两侧加上引号。


五、PHP是一门类型松散的语言

  • 在上面的实例中,我们注意到,不必向 PHP 声明该变量的数据类型。

  • PHP 会根据变量的值,自动把变量转换为正确的数据类型。

  • 在强类型的编程语言中,我们必须在使用变量前先声明(定义)变量的类型和名称。


六、PHP变量作用域(建议初学者暂时了解,不用深究)

变量的作用域是脚本中变量可被引用/使用的部分。

PHP 有四种不同的变量作用域:

  •  local

  • global

  •  static

  •  parameter


1.局部和全局作用域

在所有函数外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global 关键字。

在 PHP 函数内部声明的变量是局部变量,仅能在函数内部访问:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php 
$x=5; // 全局变量 

function myTest() 
{ 
    $y=10; // 局部变量 
    echo "<p>测试函数内变量:<p>"; 
    echo "变量 x 为: $x"; 
    echo "<br>"; 
    echo "变量 y 为: $y"; 
}  

myTest(); 

echo "<p>测试函数外变量:<p>"; 
echo "变量 x 为: $x"; 
echo "<br>"; 
echo "变量 y 为: $y"; 
?>
</body>
</html>



2.PHP global关键词

global 关键字用于函数内访问全局变量。

  • 在函数内调用函数外定义的全局变量,我们需要在函数中的变量前加上 global 关键字:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php
$x=5;
$y=6;
function test(){
	global $x,$y;
	$y=$x+$y;
}
test();
echo $y;
?>
</body>
</html>

注:大家可以把global去掉看看是什么效果

  • PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。 index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量。

上面的实例可以写成这样:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php
$x=5;
$y=6;
function myTest()
{
$GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
} 
myTest();
myTest();
myTest();
myTest();
echo $y;
?>
</body>
</html>

注:两种方法实际的效果是一样的


3.PHP static关键词

当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。

要做到这一点,请在您第一次声明变量时使用 static 关键字:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php
function myTest()
{
static $x=0;
echo $x;
$x++;
}
myTest();
myTest();
myTest();
?>
</body>
</html>

注:global内的内容也会被销毁吗???


4.参数作用域

参数是通过调用代码将值传递给函数的局部变量。

参数是在参数列表中声明的,作为函数声明的一部分:

更多详细介绍请查看PHP 函数章节

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php
function test($x)
{
echo $x;
}
test(2016);
?>
</body>
</html>



七、可变变量

可变变量即变量的变量,实质就是在已经声明过了的变量前面,再加一个$符号,实例如下

先设置$x

<?php
$x= 'hello';
$$x='xiao ming';
echo "$x ${$x}";
?>

以上代码也可以写成:

<?php
$x= 'hello';
$hello='xiao ming';
echo "$x $hello";
?>

这两个例子是等价的

注:可变变量用于数组,必须解决一个模棱两可的问题。这就是当写下 $$a[1] 时,解析器需要知道是想要 $a[1] 作为一个变量呢,还是想要 $$a 作为一个变量并取出该变量中索引为 [1] 的值。解决此问题的语法是,对第一种情况用 ${$a[1]},对第二种情况用 ${$a}[1]。

学习心得:

  • 对变量概念的理解,变量就是放信息的容器

  • 变量的四种作用域的应该范围和区别

继续学习
||
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <?php $x=5; $y=6; $z=$x+$y; echo $z; ?> </body> </html>
提交重置代码