<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>变量</title>
</head>
<body>
<!-- 变量 用于存储数据的容器 -->
<!-- PHP 变量规则:
变量以 $ 符号开始,后面跟着变量的名称
变量名必须以字母或者下划线字符开始
变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )
变量名不能包含空格
变量名是区分大小写的($y 和 $Y 是两个不同的变量)
tip:PHP 语句和 PHP 变量都是区分大小写的。
当赋一个文本值给变量时,在文本值上加引号
php没有声明变量的命令,变量在第一次赋值时被创建
-->
<?php
echo "变量<br>";
$a=1;
$b=2;
$z=$a+$b;
echo '$z='.$z; // $z=3
?>
<!-- 变量作用域 -->
<!-- local
global 用于函数内访问全局变量
static 当一个函数完成时,它的所有变量通常都会被删除。希望某个局部变量不要被删除。在第一次声明变量时使用 static 关键字
parameter
-->
<!-- 在所有函数外部定义的变量,拥有全局作用域,
除了函数外,全局变量可以被脚本中的任何部分访问,
要在一个函数中访问一个全局变量,需要使用global关键字
在php函数内部声明的变量是局部变量,仅能在函数内部访问
-->
<?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"; //报错
?>
<!-- global 用于函数内访问全局变量 -->
<?php
$x1=5;
$y1=10;
function myTest1(){
global $x1,$y1;
$y1=$x1+$y1;
};
myTest1();
echo $y1; // 输出 15
?>
<!-- PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。 index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量。 -->
<?php
$x2=5;
$y2=10;
function myTest2(){
$GLOBALS['y2']=$GLOBALS['x2']+$GLOBALS['y2'];
};
myTest2();
echo $y2."<br>"; // 输出 15
?>
<!-- static 当一个函数完成时,它的所有变量通常都会被删除。希望某个局部变量不要被删除。在第一次声明变量时使用 static 关键字
然后,每次调用该函数时,该变量将会保留着函数前一次被调用时的值。
注释:该变量仍然是函数的局部变量。
-->
<?php
function myTest3(){
static $x=0;
// $x=0;
echo $x." ";
$x++;
}
myTest3();
myTest3();
myTest3();
?>
<!-- 参数作用域 -->
<!-- 参数是通过调用代码将值传递给函数的局部变量。参数是在参数列表中声明的,作为函数声明的一部分: -->
<?php
echo "<br>";
function myTest4($x){
echo $x;
}
myTest4(5);
?>
<!-- 在 php 中函数是有独立的作用域,所以局部变量会覆盖全局变量,即使局部变量中并定义没有全局变量相同的变量,也会被覆盖 -->
<?php
$c=5;
$d=3;
function t(){
echo $c-$d; // 报错 输出 0
}
t();
echo "<br>";
echo $c; //输出 5
echo "<br>";
?>
<?php
$e=5;
$f=3;
function t1(){
global $e,$f;
echo $e-$f; // 输出 2
}
t1();
echo PHP_EOL;
function t2(){
echo $GLOBALS['e']-$GLOBALS['f']; // 输出 2
}
t2();
?>
<!-- PHP_EOL 换行符 -->
<?php
echo "3";
echo PHP_EOL;
echo "4";
//windows平台相当于 echo "\r\n";
//unix\linux平台相当于 echo "\n";
//mac平台相当于 echo "\r";
?>
</body>
</html>
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。