zzy
02-PHP变量

02-PHP变量

php变量以$开头,类似var申明变量,区别是$作为变量名的开头,是变量名的一部分,而非申明关键字.

输出指网页显示的内容,目前并无CSS信息.

变量

1. 变量的申明与赋值

1
2
3
4
5
<?php
$a = 'Hello World';
echo $a;
?>
//输出:Hello World

2. 变量的替换

1
2
3
4
5
6
<?php
$a = '111111';
$a = '222222';
echo $a;
?>
//输出:222222

后续赋值会将原始赋值替换

3. 多变量

1
2
3
4
5
6
<?php
$x = 5;
$y = 6;
$z= $x + $y
echo $z
//输出:11

4. PHP 变量规则:

  • 变量以 $ 符号开始,后面跟着变量的名称
  • 变量名必须以字母或者下划线字符开始
  • 变量名只能包含字母、数字以及下划线(A-z、0-9 和 _ )
  • 变量名不能包含空格
  • 变量名是区分大小写的(y 和 Y 是两个不同的变量)

5. PHP是弱类型语言

1
2
3
4
5
6
7
<?php
$txt="Hello world!";
$x=5;
$y=10.5;
?>
// 不必向 PHP 声明该变量的数据类型,PHP 会根据变量的值,自动把变量转换为正确的数据类型.
// 在强类型的编程语言中,我们必须在使用变量前先声明(定义)变量的类型和名称.

6. PHP变量作用域

  • local

  • global

  • static

  • parameter

局部(local)和全局作用域(global)

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?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";
?>

调用myTest()函数

函数内:

  • x 不输出(global)
  • y 输出(local)

因为 $x 变量在函数外定义,无法在函数内使用,如果要在一个函数中访问一个全局变量,需要使用 global 关键字.

函数外:

  • x 输出(global)
  • y 不输出(local)

因为 $y 变量在函数中定义,属于局部变量。

可以在不同函数中使用相同的变量名称,因为这些函数内定义的变量名是局部变量,只作用于该函数内。

PHP global 关键字

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$x=5;
$y=10;

function myTest()
{
global $x,$y;
$y=$x+$y;
}

myTest();
echo $y; // 输出 15
?>

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

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

1
2
3
4
5
6
7
8
9
10
11
12
<?php
$x=5;
$y=10;

function myTest()
{
$GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
}

myTest();
echo $y;
?>

Static 作用域

当一个函数完成时,它的所有变量通常都会被删除.

如果希望某个局部变量不要被删除,需要在第一次声明变量时使用 static 关键字:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
function myTest()
{
static $x=0;
echo $x;
$x++;
echo PHP_EOL; // 换行符
}

myTest();
myTest();
myTest();
?>

然后,每次调用该函数时,该变量将会保留着函数前一次被调用时的值。

注释:该变量仍然是函数的局部变量。

参数作用域(parameter)

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

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

1
2
3
4
5
6
7
<?php
function myTest($x)
{
echo $x;
}
myTest(5);
?>

其实就是子程序/函数中形参的作用域,与其他语言没有什么区别.

7. 数组与索引

1
2
3
4
5
<?php
$as = array("a1","a2","a3");
echo $as[0];// 输出a1
// 索引从0开始,和其他语言一致
?>
本文作者:zzy
本文链接:http://周梓煜.com/2024/01/13/php-02-PHP变量/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可