<!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>
|
|