PHP语法
PHP的三种注释
<?php// 这是单行注释# 这也是单行注释/*这是多行注释块它横跨了多行*/?>
PHP大小写敏感
1、 所有用户定义的函数、类和关键词(例如 if、else、echo 等等)都对大小写不敏感
2、 PHP 中,所有变量都对大小写敏感
PHP变量
PHP变量规则
- 变量以 $ 符号开头,其后是变量的名称
- 变量名称必须以字母或下划线开头
- 变量名称不能以数字开头
- 变量名称只能包含字母数字字符和下划线(A-z、0-9 以及 _)
- 变量名称对大小写敏感($y 与 $Y 是两个不同的变量)
PHP变量创建
PHP 没有创建变量的命令。
变量会在首次为其赋值时被创建
注意:
不必告知 PHP 变量的数据类型。
PHP 根据它的值,自动把变量转换为正确的数据类型。
在诸如 C 和 C++ 以及 Java 之类的语言中,程序员必须在使用变量之前声明它的名称和类型。
PHP变量作用域
在 PHP 中,可以在脚本的任意位置对变量进行声明。
变量的作用域指的是变量能够被引用/使用的那部分脚本。
PHP 有三种不同的变量作用域:
- local(局部)
- global(全局)
- static(静态)
Local 和 Global 作用域
函数之外声明的变量拥有 Global 作用域,只能在函数以外进行访问。
函数内部声明的变量拥有 LOCAL 作用域,只能在函数内部进行访问。 ```php <?php $x=5; // 全局作用域
function myTest() { $y=10; // 局部作用域 echo “
测试函数内部的变量:
“; echo “变量 x 是:$x”; echo ““; echo “变量 y 是:$y”; }
myTest();
echo “
测试函数之外的变量:
“; echo “变量 x 是:$x”; echo ““; echo “变量 y 是:$y”; ?>
在上例中,有两个变量 $x 和 $y,以及一个函数 myTest()。$x 是全局变量,因为它是在函数之外声明的,而 $y 是局部变量,因为它是在函数内声明的。<br />如果我们在 myTest() 函数内部输出两个变量的值,$y 会输出在本地声明的值,但是无法 $x 的值,因为它在函数之外创建。<br />然后,如果在 myTest() 函数之外输出两个变量的值,那么会输出 $x 的值,但是不会输出 $y 的值,因为它是局部变量,并且在 myTest() 内部创建。<br />注释:您可以在不同的函数中创建名称相同的局部变量,因为局部变量只能被在其中创建它的函数识别。<a name="W0xkl"></a>#### PHP global 关键词global 关键词用于在函数内访问全局变量。<br />要做到这一点,请在(函数内部)变量前面使用 global 关键词:```php<?php$x=5;$y=10;function myTest() {global $x,$y;$y=$x+$y;}myTest();echo $y; // 输出 15?>
PHP 同时在名为 $GLOBALS[index] 的数组中存储了所有的全局变量。下标存有变量名。这个数组在函数内也可以访问,并能够用于直接更新全局变量。
上面的例子可以这样重写:
<?php$x=5;$y=10;function myTest() {$GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];}myTest();echo $y; // 输出 15?>
PHP static 关键词
通常,当函数完成/执行后,会删除所有变量。不过,有时我需要不删除某个局部变量。实现这一点需要更进一步的工作。
要完成这一点,请在您首次声明变量时使用 static 关键词:
<?phpfunction myTest() {static $x=0;echo $x;$x++;}myTest();myTest();myTest();?>
每当函数被调用时,这个变量所存储的信息都是函数最后一次被调用时所包含的信息
注释:该变量仍然是函数的局部变量
PHP 5 echo 和 print 语句
echo 和 print 之间的差异:
- echo - 能够输出一个以上的字符串
- print - 只能输出一个字符串,并始终返回 1
提示:echo 比 print 稍快,因为它不返回任何值。
echo 是一个语言结构,有无括号均可使用:echo 或 echo()。
print 也是语言结构,有无括号均可使用:print 或 print()
PHP 数据类型
PHP字符串
PHP 整数
整数规则:
- 整数必须有至少一个数字(0-9)
- 整数不能包含逗号或空格
- 整数不能有小数点
- 整数正负均可
可以用三种格式规定整数:十进制、十六进制(前缀是 0x)或八进制(前缀是 0)
PHP 浮点数
PHP 逻辑
PHP 数组
数组在一个变量中存储多个值
<?php$cars=array("Volvo","BMW","SAAB");var_dump($cars);?>//array(3) { [0]=> string(5) "Volvo" [1]=> string(3) "BMW" [2]=> string(4) "SAAB" }
PHP 对象
对象是存储数据和有关如何处理数据的信息的数据类型
在 PHP 中,必须明确地声明对象。
首先我们必须声明对象的类。对此,我们使用 class 关键词。类是包含属性和方法的结构。
然后我们在对象类中定义数据类型,然后在该类的实例中使用此数据类型: ```php <?php class Car { var $color; function Car($color=”green”) {$this->color = $color;
} function what_color() {
return $this->color;
} }
function print_vars($obj) { foreach (get_object_vars($obj) as $prop => $val) { echo “\t$prop = $val\n”; } }
// instantiate one object $herbie = new Car(“white”);
// show herbie properties echo “\herbie: Properties\n”; print_vars($herbie);
?>
运行结果:\herbie: Properties color = white
<a name="TpP1t"></a>### PHP NULL 值特殊的 NULL 值表示变量无值。NULL 是数据类型 NULL 唯一可能的值。<br />NULL 值标示变量是否为空。也用于区分空字符串与空值数据库。<br />可以通过把值设置为 NULL,将变量清空:<a name="dPbGa"></a>## PHP 字符串函数下面介绍常用字符串函数<a name="ryfjv"></a>### strlen() 函数strlen() 函数返回字符串的长度,以字符计```php<?phpecho strlen("Hello world!");//12?>
提示:strlen() 常用于循环和其他函数,在确定字符串何时结束很重要时。(例如,在循环中,我们也许需要在字符串的最后一个字符之后停止循环)。
str_word_count() 函数
对字符串中的单词进行计数
<?phpecho str_word_count("Hello world!"); // 输出 2?>
strrev() 函数
反转字符串
<?phpecho strrev("Hello world!"); // 输出 !dlrow olleH?>
strpos() 函数
strpos() 函数用于检索字符串内指定的字符或文本。
如果找到匹配,则会返回首个匹配的字符位置。如果未找到匹配,则将返回 FALSE。
下例检索字符串 “Hello world!” 中的文本 “world”:
<?phpecho strpos("Hello world!","world"); //6?>提示:上例中字符串 "world" 的位置是 6。是 6(而不是 7)的理由是,字符串中首字符的位置是 0 而不是 1
str_replace() 函数
用一些字符串替换字符串中的另一些字符。
用 “Kitty” 替换文本 “world” :
<?phpecho str_replace("world", "Kitty", "Hello world!"); // 输出 Hello Kitty!?>// 倒着理解比较好理解<——// 在Hello world!中用Kitty代替world
PHP常量
常量是单个值的标识符(名称)。在脚本中无法改变该值。
有效的常量名以字符或下划线开头(常量名称前面没有 $ 符号)。
注释:与变量不同,常量贯穿整个脚本是自动全局的。
设置 PHP 常量
如需设置常量,请使用 define() 函数 - 它使用三个参数:
- 首个参数定义常量的名称
- 第二个参数定义常量的值
可选的第三个参数规定常量名是否对大小写不敏感。默认是 false。
下例创建了一个对大小写不敏感的常量,值为 “Welcome to W3School.com.cn!”:
<?phpdefine("GREETING", "Welcome to W3School.com.cn!", true);echo greeting;?>
常量是全局的
常量是自动全局的,而且可以贯穿整个脚本使用。
PHP 运算符
算术运算符
+、-、*、/、%(取模)
赋值运算符
字符串运算符
| 运算符 | 名称 | 例子 | 结果 |
|---|---|---|---|
| . | 串接 | $txt1 = “Hello” $txt2 = $txt1 . “ world!” | 现在 $txt2 包含 “Hello world!” |
| .= | 串接赋值 | $txt1 = “Hello” $txt1 .= “ world!” | 现在 $txt1 包含 “Hello world!” |
<?php$a = "Hello";$b = $a . " world!";echo $b; // 输出 Hello world!$x="Hello";$x .= " world!";echo $x; // 输出 Hello world!?>
递增/递减运算符
<?php$x=17;echo ++$x; // 输出 18$y=17;echo $y++; // 输出 17$z=17;echo --$z; // 输出 16$i=17;echo $i--; // 输出 17?>
比较运算符
PHP 比较运算符用于比较两个值(数字或字符串)
| 运算符 | 名称 | 例子 | 结果 |
|---|---|---|---|
| == | 等于 | $x == $y | 如果 $x 等于 $y,则返回 true。 |
| === | 全等(完全相同) | $x === $y | 如果 $x 等于 $y,且它们类型相同,则返回 true。 |
| != | 不等于 | $x != $y | 如果 $x 不等于 $y,则返回 true。 |
| <> | 不等于 | $x <> $y | 如果 $x 不等于 $y,则返回 true。 |
| !== | 不全等(完全不同) | $x !== $y | 如果 $x 不等于 $y,或它们类型不相同,则返回 true。 |
| > | 大于 | $x > $y | 如果 $x 大于 $y,则返回 true。 |
| < | 小于 | $x < $y | 如果 $x 小于 $y,则返回 true。 |
| >= | 大于或等于 | $x >= $y | 如果 $x 大于或者等于 $y,则返回 true. |
| <= | 小于或等于 | $x <= $y | 如果 $x 小于或者等于 $y,则返回 true。 |
<?php$x=17;$y="17";var_dump($x == $y);//bool(true)echo "<br>";var_dump($x === $y);//bool(false)echo "<br>";var_dump($x != $y);//bool(false)echo "<br>";var_dump($x !== $y);//bool(true)echo "<br>";$a=17;$b=8;var_dump($a > $b);//bool(true)echo "<br>";var_dump($a < $b);//bool(false)?>
逻辑运算符
| 运算符 | 名称 | 例子 | 结果 |
|---|---|---|---|
| and | 与 | $x and $y | 如果 $x 和 $y 都为 true,则返回 true。 |
| or | 或 | $x or $y | 如果 $x 和 $y 至少有一个为 true,则返回 true。 |
| xor | 异或 | $x xor $y | 如果 $x 和 $y 有且仅有一个为 true,则返回 true。 |
| && | 与 | $x && $y | 如果 $x 和 $y 都为 true,则返回 true。 |
| || | 或 | $x || $y | 如果 $x 和 $y 至少有一个为 true,则返回 true。 |
| ! | 非 | !$x | 如果 $x 不为 true,则返回 true。 |
数组运算符
数组运算符用于比较数组
| 运算符 | 名称 | 例子 | 结果 |
|---|---|---|---|
| + | 联合 | $x + $y | $x 和 $y 的联合(但不覆盖重复的键) |
| == | 相等 | $x == $y | 如果 $x 和 $y 拥有相同的键/值对,则返回 true。 |
| === | 全等 | $x === $y | 如果 $x 和 $y 拥有相同的键/值对,且顺序相同类型相同,则返回 true。 |
| != | 不相等 | $x != $y | 如果 $x 不等于 $y,则返回 true。 |
| <> | 不相等 | $x <> $y | 如果 $x 不等于 $y,则返回 true。 |
| !== | 不全等 | $x !== $y | 如果 $x 与 $y 完全不同,则返回 true。 |
<?php$x = array("a" => "apple", "b" => "banana");$y = array("c" => "orange", "d" => "peach");$z = $x + $y; // $x 与 $y 的联合var_dump($z); //array(4) { ["a"]=> string(5) "apple" ["b"]=> string(6) "banana" ["c"]=> string(6) "orange" ["d"]=> string(5) "peach" }var_dump($x == $y);//bool(false)var_dump($x === $y);//bool(false)var_dump($x != $y);//bool(false)var_dump($x <> $y);//bool(false)var_dump($x !== $y);//bool(false)?>
PHP if…else…elseif 语句
PHP条件语句
在 PHP 中,我们可以使用以下条件语句:
- if 语句 - 如果指定条件为真,则执行代码
- if…else 语句 - 如果条件为 true,则执行代码;如果条件为 false,则执行另一端代码
- if…elseif….else 语句 - 根据两个以上的条件执行不同的代码块
- switch 语句 - 选择多个代码块之一来执行
Switch 语句
如果您希望有选择地执行若干代码块之一,请使用 Switch 语句。
使用 Switch 语句可以避免冗长的 if..elseif..else 代码块。
<?php$favfruit="orange";switch ($favfruit) {case "apple":echo "Your favorite fruit is apple!";break;case "banana":echo "Your favorite fruit is banana!";break;case "orange":echo "Your favorite fruit is orange!";break;default:echo "Your favorite fruit is neither apple, banana, or orange!";}?>
while 循环
PHP while 循环在指定条件为 true 时执行代码块
PHP 循环
- while - 只要指定条件为真,则循环代码块
- do…while - 先执行一次代码块,然后只要指定条件为真则重复循环
- for - 循环代码块指定次数
- foreach - 遍历数组中的每个元素并循环代码块
while 循环
while (条件为真) {要执行的代码;}
do…while 循环
do…while 循环首先会执行一次代码块,然后检查条件,如果指定条件为真,则重复循环
do {要执行的代码;} while (条件为真);
PHP for 循环
PHP for 循环执行代码块指定的次数。
for 循环
如果您已经提前确定脚本运行的次数,可以使用 for 循环。
<?phpfor ($x=0; $x<=10; $x++) {echo "数字是:$x <br>";}?>
foreach 循环
foreach 循环只适用于数组,并用于遍历数组中的每个键/值对。
foreach ($array as $value) {code to be executed;}
每进行一次循环迭代,当前数组元素的值就会被赋值给 $value 变量,并且数组指针会逐一地移动,直到到达最后一个数组元素。
下面的例子演示的循环将输出给定数组($colors)的值:
<?php$colors = array("red","green","blue","yellow");foreach ($colors as $value) {echo "$value <br>";}?>
PHP 函数
PHP 的真正力量来自它的函数:它拥有超过 1000 个内建的函数。
PHP 用户定义函数
除了内建的 PHP 函数,我们可以创建我们自己的函数。
函数是可以在程序中重复使用的语句块。
页面加载时函数不会立即执行。
函数只有在被调用时才会执行。
在 PHP 创建用户定义函数
用户定义的函数声明以单词 “function” 开头:
function functionName() {被执行的代码;}
注释:函数名能够以字母或下划线开头(而非数字)。
注释:函数名对大小写不敏感。
提示:函数名应该能够反映函数所执行的任务。
<?phpfunction sayHi() {echo "Hello world!";}sayhi(); // 调用函数?>
PHP 函数参数
可以通过参数向函数传递信息。参数类似变量。
参数被定义在函数名之后,括号内部。您可以添加任意多参数,只要用逗号隔开即可。
下面的例子中的函数有一个参数($fname)。当调用 familyName() 函数时,我们同时要传递一个名字(例如 Bill),这样会输出不同的名字,但是姓氏相同:
<?phpfunction familyName($fname) {echo "$fname Zhang.<br>";}familyName("Li");familyName("Hong");familyName("Tao");familyName("Xiao Mei");familyName("Jian");?>
函数有两个参数($fname 和 $year)
<?phpfunction familyName($fname,$year) {echo "$fname Zhang. Born in $year <br>";}familyName("Li","1975");familyName("Hong","1978");familyName("Tao","1983");?>
PHP 默认参数值
下面的例子展示了如何使用默认参数。如果我们调用没有参数的 setHeight() 函数,它的参数会取默认值:
<?phpfunction setHeight($minheight=50) {echo "The height is : $minheight <br>";}setHeight(350);setHeight(); // 将使用默认值 50setHeight(135);setHeight(80);?>
PHP 函数 - 返回值
如需使函数返回值,请使用 return 语句:
<?phpfunction sum($x,$y) {$z=$x+$y;return $z;}echo "5 + 10 = " . sum(5,10) . "<br>";echo "7 + 13 = " . sum(7,13) . "<br>";echo "2 + 4 = " . sum(2,4);?>
return后面的代码不会执行(return只会返回不会输出)
外面调用要echo 才会输出 echo sum(4,6);
形参和返回值类型的约束+PHP7.0新特性

<?phpfunction sum($a,$b){return $a+$b;}var_dump(sum(1,2)); //int 3?>
我要把返回值限定为字符串:
<?phpfunction sum($a,$b):string //这样就对返回值进行了限制,返回字符串类型,同理浮点型float{return $a+$b;}var_dump(sum(1,2)); //string 3?>
对形参的限制:
<?phpfunction test(...$arr){ //这是PHP新特性里面的东西(php 7以上好像是)var_dump($arr);}test('abc',1,2,3,'bb',123,4,5,6,7);?>//这样就会以数组的方式进行返回//array(10) { [0]=> string(3) "abc" [1]=> int(1) [2]=> int(2) [3]=> int(3) [4]=> string(2) "bb" [5]=> int(123) [6]=> int(4) [7]=> int(5) [8]=> int(6) [9]=> int(7) }
匿名函数
$test=function(){ //没有名字,那我怎么调用呢?前面加一个变量,比如$test=echo '我是匿名函数';}; //加分号结束//调用$test();

PHP内置函数
常见函数一定要背下来
查PHP手册
floor向下取整(地板)
ceil向上取整(天花板)

rand()随机数
<?php$num=rand(1,6); //随机返回1,2,3,4,5,6中的一个?>echo $num;
mt_rand() 产生更好的随机数
什么叫更好的随机数?这个效率比rand高。
<?php$num=mt_rand(0,5); //随机返回0,1,2,3,4,5中的一个?>echo $num;
PHP 数组
数组能够在单独的变量名中存储一个或多个值。
实例:
数组在单个变量中存储多个值:
<?php$cars=array("porsche","BMW","Volvo");echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";?>
什么是数组?
数组能够在单一变量名中存储许多值,并且您能够通过引用索引号来访问某个值。
在 PHP 中创建数组
array() 函数用于创建数组
在 PHP 中,有三种数组类型:
- 索引数组 - 带有数字索引的数组
- 关联数组 - 带有指定键的数组
- 多维数组 - 包含一个或多个数组的数组
PHP 索引数组
有两种创建索引数组的方法:
索引是自动分配的(索引从 0 开始):
PHP5.4之前:$arr=array();
PHP5.4之后:$arr=[1,2,3,4,5,6];
$cars=array("porsche","BMW","Volvo");
或者也可以手动分配索引:
$cars[0]="porsche";$cars[1]="BMW";$cars[2]="Volvo";
获得数组的长度 - count() 函数
count() 函数用于返回数组的长度(元素数)
<?php$cars=array("porsche","BMW","Volvo");echo count($cars);?>
遍历索引数组
如需遍历并输出索引数组的所有值,您可以使用 for 循环,就像这样
<?php$cars=array("porsche","BMW","Volvo");$arrlength=count($cars);for($x=0;$x<$arrlength;$x++) {echo $cars[$x];echo "<br>";}?>
PHP 关联数组
关联数组是使用您分配给数组的指定键的数组。
有两种创建关联数组的方法:
PHP5.4之前:$arr=array()
PHP5.4之后:$arr=[‘java’=>’大数据’,’html’=>’页面’,’php’=>’mysql’];
$age=array("Bill"=>"35","Steve"=>"37","Elon"=>"43");
或者:
$age['Bill']="63";$age['Steve']="56";$age['Elon']="47";
随后可以在脚本中使用指定键
<?php$age=array("Bill"=>"63","Steve"=>"56","Elon"=>"47");echo "Elon is " . $age['Elon'] . " years old.";?>
遍历关联数组
如需遍历并输出关联数组的所有值,您可以使用 foreach 循环,就像这样
<?php$age=array("Bill"=>"63","Steve"=>"56","Elon"=>"47");foreach($age as $x=>$x_value) {echo "Key=" . $x . ", Value=" . $x_value;echo "<br>";}?>运行结果:Key=Bill, Value=63Key=Steve, Value=56Key=Elon, Value=47
只能用在索引数组,而且索引不能断!

list方法(只对索引数组有效)
<?php$arr=['a','b','c','d','e','f'];list($a,$b,$c,$d)=$arr;echo $a,$b,$c,$d; // abcd?>
each方法:(会有个索引,也会有个关联的)
<?php$arr=['a','b','c','d','e','f'];var_dump(each($arr));var_dump(each($arr));/*array(4) {[1]=>string(1) "a"["value"]=>string(1) "a"[0]=>int(0)["key"]=>int(0)}array(4) {[1]=>string(1) "b"["value"]=>string(1) "b"[0]=>int(1)["key"]=>int(1)}*/?>
可以list、each、while配合去将数组输出:
<?php$arr=['a','b','c','d','e','f'];while(list($key,$val)=each($arr)){echo $key.'---'.$val.'<br />';}?>
多维数组
我们已经知道数组是一种数/值对的简单列表
不过,有时您希望用一个以上的键存储值
可以用多维数组进行存储
PHP - 多维数组
多维数组指的是包含一个或多个数组的数组
PHP 能理解两、三、四或五级甚至更多级的多维数组。不过,超过三级深的数组对于大多数人难于管理。
注释:数组的维度指示您需要选择元素的索引数。
| 品牌 | 库存 | 销量 |
|---|---|---|
| Volvo | 33 | 20 |
| BMW | 17 | 15 |
| Saab | 5 | 2 |
| Land Rover | 15 | 11 |
我们能够在两维数组中存储上表中的数据,就像这样
$cars = array(array("Volvo",22,18),array("BMW",15,13),array("Saab",5,2),array("Land Rover",17,15));
现在这个两维数组包含了四个数组,并且它有两个索引(下标):行和列。
如需访问 $cars 数组中的元素,我们必须使用两个索引(行和列):
<?phpecho $cars[0][0].": 库存:".$cars[0][1].", 销量:".$cars[0][2].".<br>";echo $cars[1][0].": 库存:".$cars[1][1].", 销量:".$cars[1][2].".<br>";echo $cars[2][0].": 库存:".$cars[2][1].", 销量:".$cars[2][2].".<br>";echo $cars[3][0].": 库存:".$cars[3][1].", 销量:".$cars[3][2].".<br>";?>
我们也可以在 For 循环中使用另一个 For 循环,来获得 $cars 数组中的元素(我们仍需使用两个索引):
<?phpfor ($row = 0; $row < 4; $row++) {echo "<p><b>Row number $row</b></p>";echo "<ul>";for ($col = 0; $col < 3; $col++) {echo "<li>".$cars[$row][$col]."</li>";}echo "</ul>";}?>
数组的增删改查

三维数组:
超全局数组



指定post必须用post接收
$_REQUEST(POST和GET都能接收)
<?phpvar_dump($_SERVER['HTTP_HOST']);//string(9) "localhost"?>
PHP 数组排序
数组的排序函数
- sort() - 以升序对数组排序
- rsort() - 以降序对数组排序
- asort() - 根据值,以升序对关联数组进行排序
- ksort() - 根据键,以升序对关联数组进行排序
- arsort() - 根据值,以降序对关联数组进行排序
- krsort() - 根据键,以降序对关联数组进行排序
对数组进行升序排序 - sort()
下面的例子按照字母升序对数组 $cars 中的元素进行排序:
按照数字升序对数组 $numbers 中的元素进行排序<?php$cars=array("porsche","BMW","Volvo");sort($cars);?>运行结果:BMWVolvoporsche
<?php$numbers=array(3,5,1,22,11);sort($numbers);?>/*1351122*/
对数组进行降序排序 - rsort()
<?php$numbers=array(3,5,1,22,11);rsort($numbers);?>
根据值对数组进行升序排序 - asort()
对关联数组进行升序排序(对value进行升序):<?php$age=array("Bill"=>"63","Steve"=>"56","Elon"=>"47");asort($age);?>运行结果:Key=Elon, Value=47Key=Steve, Value=56Key=Bill, Value=63
根据键对数组进行升序排序 - ksort()
下面的例子根据键对关联数组进行升序排序:<?php$age=array("Bill"=>"63","Steve"=>"56","Elon"=>"47");ksort($age);?>运行结果:Key=Bill, Value=63Key=Elon, Value=47Key=Steve, Value=56
根据值对数组进行降序排序 - arsort()
根据值对关联数组进行降序排序<?php$age=array("Bill"=>"63","Steve"=>"56","Elon"=>"47");arsort($age);?>
根据键对数组进行降序排序 - krsort()
下面的例子根据键对关联数组进行降序排序:<?php$age=array("Bill"=>"63","Steve"=>"56","Elon"=>"47");krsort($age);?>
PHP 全局变量 - 超全局变量
超全局变量在 PHP 4.1.0 中引入,是在全部作用域中始终可用的内置变量
PHP 全局变量 - 超全局变量
PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们。 这些超全局变量是:
- $GLOBALS
- $_SERVER
- $_REQUEST
- $_POST
- $_GET
- $_FILES
- $_ENV
- $_COOKIE
- $_SESSION
$GLOBALS — 引用全局作用域中可用的全部变量
$GLOBALS 这种全局变量用于在 PHP 脚本中的任意位置访问全局变量(从函数或方法中均可)。
PHP 在名为 $GLOBALS[index] 的数组中存储了所有全局变量。变量的名字就是数组的键。
下面的例子展示了如何使用超级全局变量 $GLOBALS: ```php <?php $x = 75; $y = 25;
function addition() { $GLOBALS[‘z’] = $GLOBALS[‘x’] + $GLOBALS[‘y’]; }
addition(); echo $z; ?>
在上面的例子中,由于 z 是 $GLOBALS 数组中的变量,因此在函数之外也可以访问它<a name="nehHB"></a>### PHP $_SERVER$_SERVER 这种超全局变量保存关于报头、路径和脚本位置的信息```php<?phpecho $_SERVER['PHP_SELF']; //返回当前执行脚本的文件名echo "<br>";echo $_SERVER['SERVER_NAME'];//返回当前运行脚本所在的服务器的主机名(比如 www.w3school.com.cn)。echo "<br>";echo $_SERVER['HTTP_HOST'];//返回来自当前请求的 Host 头echo "<br>";echo $_SERVER['HTTP_REFERER'];//返回当前页面的完整 URL(不可靠,因为不是所有用户代理都支持)。echo "<br>";echo $_SERVER['HTTP_USER_AGENT'];//返回浏览器名字echo "<br>";echo $_SERVER['SCRIPT_NAME'];//返回当前脚本的路径?>运行结果:/example/php/demo_php_global_server.phpwww.w3school.com.cnwww.w3school.com.cnhttps://www.w3school.com.cn/tiy/s.asp?f=demo_php_global_serverMozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0/example/php/demo_php_global_server.php
下表列出了您能够在 $_SERVER 中访问的最重要的元素:
| 元素/代码 | 描述 |
|---|---|
| $_SERVER[‘PHP_SELF’] | 返回当前执行脚本的文件名。 |
| $_SERVER[‘GATEWAY_INTERFACE’] | 返回服务器使用的 CGI 规范的版本。 |
| $_SERVER[‘SERVER_ADDR’] | 返回当前运行脚本所在的服务器的 IP 地址。 |
| $_SERVER[‘SERVER_NAME’] | 返回当前运行脚本所在的服务器的主机名(比如 www.w3school.com.cn)。 |
| $_SERVER[‘SERVER_SOFTWARE’] | 返回服务器标识字符串(比如 Apache/2.2.24)。 |
| $_SERVER[‘SERVER_PROTOCOL’] | 返回请求页面时通信协议的名称和版本(例如,“HTTP/1.0”)。 |
| $_SERVER[‘REQUEST_METHOD’] | 返回访问页面使用的请求方法(例如 POST)。 |
| $_SERVER[‘REQUEST_TIME’] | 返回请求开始时的时间戳(例如 1577687494)。 |
| $_SERVER[‘QUERY_STRING’] | 返回查询字符串,如果是通过查询字符串访问此页面。 |
| $_SERVER[‘HTTP_ACCEPT’] | 返回来自当前请求的请求头。 |
| $_SERVER[‘HTTP_ACCEPT_CHARSET’] | 返回来自当前请求的 Accept_Charset 头( 例如 utf-8,ISO-8859-1) |
| $_SERVER[‘HTTP_HOST’] | 返回来自当前请求的 Host 头。 |
| $_SERVER[‘HTTP_REFERER’] | 返回当前页面的完整 URL(不可靠,因为不是所有用户代理都支持)。 |
| $_SERVER[‘HTTPS’] | 是否通过安全 HTTP 协议查询脚本。 |
| $_SERVER[‘REMOTE_ADDR’] | 返回浏览当前页面的用户的 IP 地址。 |
| $_SERVER[‘REMOTE_HOST’] | 返回浏览当前页面的用户的主机名。 |
| $_SERVER[‘REMOTE_PORT’] | 返回用户机器上连接到 Web 服务器所使用的端口号。 |
| $_SERVER[‘SCRIPT_FILENAME’] | 返回当前执行脚本的绝对路径。 |
| $_SERVER[‘SERVER_ADMIN’] | 该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。 |
| $_SERVER[‘SERVER_PORT’] | Web 服务器使用的端口。默认值为 “80”。 |
| $_SERVER[‘SERVER_SIGNATURE’] | 返回服务器版本和虚拟主机名。 |
| $_SERVER[‘PATH_TRANSLATED’] | 当前脚本所在文件系统(非文档根目录)的基本路径。 |
| $_SERVER[‘SCRIPT_NAME’] | 返回当前脚本的路径。 |
| $_SERVER[‘SCRIPT_URI’] | 返回当前页面的 URI。 |
PHP $_REQUEST
PHP $_REQUEST 用于收集 HTML 表单提交的数据。 (不管是GET还是POST)
PHP $_POST
PHP $_POST 广泛用于收集提交 method=”post” 的 HTML 表单后的表单数据。$_POST 也常用于传递变量。
PHP $_GET
PHP $_GET 也可用于收集提交 HTML 表单 (method=”get”) 之后的表单数据。
$_GET 也可以收集 URL 中的发送的数据。
PHP文件包含(include/require)


不在同一目录可以写:如——》include(‘mysqlD/2.php’)
require和include区别:
include包含不存在的文件会报错(warning),但是会执行
require就会报错后续代码不会执行(Fatal Error)
包含两次就出错了(不能重复包含一个文件)
include_once和require_once:
包含两次就不会报错
include_once包含不存在的文件会报错(warning),但是会执行
require_once会报错后续代码不会执行
错误处理
Notice、Warning 后续代码会继续执行
Fatal Error后续代码不会执行
屏蔽错误:@(但是致命错误屏蔽不了)
所有错误都不显示:找到php.ini—》display_errors=On 改为off 重启服务
php.ini—->error_log(错误日志保存路径)
error_reporting(0);
日期函数

<?php$time=time();//时间戳格式echo date('Y-m-d H:i:s',$time); //格林威治时间:2021-11-06 08:49:27 与北京时间差8小时echo date('Y-m-d');//2021-11-06echo date('H:i:s');//08:49:27//查看北京时间date_default_timezone_set('PRC');echo date('Y-m-d H:i:s',$time);//2021-11-06 16:54:04//也可以通过配置文件修改:date.timezone='UTC'改为'PRC'重启服务?>

