PHP语法

PHP的三种注释

  1. <?php
  2. // 这是单行注释
  3. # 这也是单行注释
  4. /*
  5. 这是多行注释块
  6. 它横跨了
  7. 多行
  8. */
  9. ?>

PHP大小写敏感

1、 所有用户定义的函数、类和关键词(例如 if、else、echo 等等)都对大小写不敏感
2、 PHP 中,所有变量都对大小写敏感

PHP变量

PHP变量规则

  • 变量以 $ 符号开头,其后是变量的名称
  • 变量名称必须以字母或下划线开头
  • 变量名称不能以数字开头
  • 变量名称只能包含字母数字字符和下划线(A-z、0-9 以及 _)
  • 变量名称对大小写敏感($y 与 $Y 是两个不同的变量)

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

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”; ?>

  1. 在上例中,有两个变量 $x $y,以及一个函数 myTest()。$x 是全局变量,因为它是在函数之外声明的,而 $y 是局部变量,因为它是在函数内声明的。<br />如果我们在 myTest() 函数内部输出两个变量的值,$y 会输出在本地声明的值,但是无法 $x 的值,因为它在函数之外创建。<br />然后,如果在 myTest() 函数之外输出两个变量的值,那么会输出 $x 的值,但是不会输出 $y 的值,因为它是局部变量,并且在 myTest() 内部创建。<br />注释:您可以在不同的函数中创建名称相同的局部变量,因为局部变量只能被在其中创建它的函数识别。
  2. <a name="W0xkl"></a>
  3. #### PHP global 关键词
  4. global 关键词用于在函数内访问全局变量。<br />要做到这一点,请在(函数内部)变量前面使用 global 关键词:
  5. ```php
  6. <?php
  7. $x=5;
  8. $y=10;
  9. function myTest() {
  10. global $x,$y;
  11. $y=$x+$y;
  12. }
  13. myTest();
  14. echo $y; // 输出 15
  15. ?>

PHP 同时在名为 $GLOBALS[index] 的数组中存储了所有的全局变量。下标存有变量名。这个数组在函数内也可以访问,并能够用于直接更新全局变量。
上面的例子可以这样重写:

  1. <?php
  2. $x=5;
  3. $y=10;
  4. function myTest() {
  5. $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
  6. }
  7. myTest();
  8. echo $y; // 输出 15
  9. ?>

PHP static 关键词

通常,当函数完成/执行后,会删除所有变量。不过,有时我需要不删除某个局部变量。实现这一点需要更进一步的工作。
要完成这一点,请在您首次声明变量时使用 static 关键词:

  1. <?php
  2. function myTest() {
  3. static $x=0;
  4. echo $x;
  5. $x++;
  6. }
  7. myTest();
  8. myTest();
  9. myTest();
  10. ?>

每当函数被调用时,这个变量所存储的信息都是函数最后一次被调用时所包含的信息
注释:该变量仍然是函数的局部变量
图片.png

PHP 5 echo 和 print 语句

echo 和 print 之间的差异:

  • echo - 能够输出一个以上的字符串
  • print - 只能输出一个字符串,并始终返回 1

提示:echo 比 print 稍快,因为它不返回任何值。

echo 是一个语言结构,有无括号均可使用:echo 或 echo()。
print 也是语言结构,有无括号均可使用:print 或 print()

PHP 数据类型

字符串、整数、浮点数、逻辑、数组、对象、NULL。

PHP字符串

字符串可以是引号内的任何文本。可以使用单引号或双引号。

PHP 整数

整数规则:

  • 整数必须有至少一个数字(0-9)
  • 整数不能包含逗号或空格
  • 整数不能有小数点
  • 整数正负均可
  • 可以用三种格式规定整数:十进制、十六进制(前缀是 0x)或八进制(前缀是 0)

    PHP var_dump() 会返回变量的数据类型和值。

    PHP 浮点数

    浮点数是有小数点或指数形式的数字。

    PHP 逻辑

    逻辑是 true 或 false。

    PHP 数组

    数组在一个变量中存储多个值

    1. <?php
    2. $cars=array("Volvo","BMW","SAAB");
    3. var_dump($cars);
    4. ?>
    5. //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”) {

    1. $this->color = $color;

    } function what_color() {

    1. 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

  1. <a name="TpP1t"></a>
  2. ### PHP NULL 值
  3. 特殊的 NULL 值表示变量无值。NULL 是数据类型 NULL 唯一可能的值。<br />NULL 值标示变量是否为空。也用于区分空字符串与空值数据库。<br />可以通过把值设置为 NULL,将变量清空:
  4. <a name="dPbGa"></a>
  5. ## PHP 字符串函数
  6. 下面介绍常用字符串函数
  7. <a name="ryfjv"></a>
  8. ### strlen() 函数
  9. strlen() 函数返回字符串的长度,以字符计
  10. ```php
  11. <?php
  12. echo strlen("Hello world!");//12
  13. ?>

提示:strlen() 常用于循环和其他函数,在确定字符串何时结束很重要时。(例如,在循环中,我们也许需要在字符串的最后一个字符之后停止循环)。

str_word_count() 函数

对字符串中的单词进行计数

  1. <?php
  2. echo str_word_count("Hello world!"); // 输出 2
  3. ?>

strrev() 函数

反转字符串

  1. <?php
  2. echo strrev("Hello world!"); // 输出 !dlrow olleH
  3. ?>

strpos() 函数

strpos() 函数用于检索字符串内指定的字符或文本。
如果找到匹配,则会返回首个匹配的字符位置。如果未找到匹配,则将返回 FALSE。
下例检索字符串 “Hello world!” 中的文本 “world”:

  1. <?php
  2. echo strpos("Hello world!","world"); //6
  3. ?>
  4. 提示:上例中字符串 "world" 的位置是 6。是 6(而不是 7)的理由是,字符串中首字符的位置是 0 而不是 1

str_replace() 函数

用一些字符串替换字符串中的另一些字符。
用 “Kitty” 替换文本 “world” :

  1. <?php
  2. echo str_replace("world", "Kitty", "Hello world!"); // 输出 Hello Kitty!
  3. ?>
  4. // 倒着理解比较好理解<——
  5. // 在Hello world!中用Kitty代替world

PHP常量

常量是单个值的标识符(名称)。在脚本中无法改变该值。
有效的常量名以字符或下划线开头(常量名称前面没有 $ 符号)。
注释:与变量不同,常量贯穿整个脚本是自动全局的。

设置 PHP 常量

如需设置常量,请使用 define() 函数 - 它使用三个参数:

  1. 首个参数定义常量的名称
  2. 第二个参数定义常量的值
  3. 可选的第三个参数规定常量名是否对大小写不敏感。默认是 false。

    下例创建了一个对大小写不敏感的常量,值为 “Welcome to W3School.com.cn!”:

    1. <?php
    2. define("GREETING", "Welcome to W3School.com.cn!", true);
    3. echo greeting;
    4. ?>

    常量是全局的

    常量是自动全局的,而且可以贯穿整个脚本使用。

PHP 运算符

算术运算符

+、-、*、/、%(取模)

赋值运算符

=

字符串运算符

运算符 名称 例子 结果
. 串接 $txt1 = “Hello” $txt2 = $txt1 . “ world!” 现在 $txt2 包含 “Hello world!”
.= 串接赋值 $txt1 = “Hello” $txt1 .= “ world!” 现在 $txt1 包含 “Hello world!”
  1. <?php
  2. $a = "Hello";
  3. $b = $a . " world!";
  4. echo $b; // 输出 Hello world!
  5. $x="Hello";
  6. $x .= " world!";
  7. echo $x; // 输出 Hello world!
  8. ?>

递增/递减运算符

  1. <?php
  2. $x=17;
  3. echo ++$x; // 输出 18
  4. $y=17;
  5. echo $y++; // 输出 17
  6. $z=17;
  7. echo --$z; // 输出 16
  8. $i=17;
  9. echo $i--; // 输出 17
  10. ?>

比较运算符

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。
  1. <?php
  2. $x=17;
  3. $y="17";
  4. var_dump($x == $y);//bool(true)
  5. echo "<br>";
  6. var_dump($x === $y);//bool(false)
  7. echo "<br>";
  8. var_dump($x != $y);//bool(false)
  9. echo "<br>";
  10. var_dump($x !== $y);//bool(true)
  11. echo "<br>";
  12. $a=17;
  13. $b=8;
  14. var_dump($a > $b);//bool(true)
  15. echo "<br>";
  16. var_dump($a < $b);//bool(false)
  17. ?>

逻辑运算符

运算符 名称 例子 结果
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。
  1. <?php
  2. $x = array("a" => "apple", "b" => "banana");
  3. $y = array("c" => "orange", "d" => "peach");
  4. $z = $x + $y; // $x 与 $y 的联合
  5. var_dump($z); //array(4) { ["a"]=> string(5) "apple" ["b"]=> string(6) "banana" ["c"]=> string(6) "orange" ["d"]=> string(5) "peach" }
  6. var_dump($x == $y);//bool(false)
  7. var_dump($x === $y);//bool(false)
  8. var_dump($x != $y);//bool(false)
  9. var_dump($x <> $y);//bool(false)
  10. var_dump($x !== $y);//bool(false)
  11. ?>

PHP if…else…elseif 语句

条件语句用于基于不同条件执行不同的动作

PHP条件语句

在 PHP 中,我们可以使用以下条件语句:

  • if 语句 - 如果指定条件为真,则执行代码
  • if…else 语句 - 如果条件为 true,则执行代码;如果条件为 false,则执行另一端代码
  • if…elseif….else 语句 - 根据两个以上的条件执行不同的代码块
  • switch 语句 - 选择多个代码块之一来执行

Switch 语句

如果您希望有选择地执行若干代码块之一,请使用 Switch 语句。
使用 Switch 语句可以避免冗长的 if..elseif..else 代码块。

  1. <?php
  2. $favfruit="orange";
  3. switch ($favfruit) {
  4. case "apple":
  5. echo "Your favorite fruit is apple!";
  6. break;
  7. case "banana":
  8. echo "Your favorite fruit is banana!";
  9. break;
  10. case "orange":
  11. echo "Your favorite fruit is orange!";
  12. break;
  13. default:
  14. echo "Your favorite fruit is neither apple, banana, or orange!";
  15. }
  16. ?>

while 循环

PHP while 循环在指定条件为 true 时执行代码块

PHP 循环

  • while - 只要指定条件为真,则循环代码块
  • do…while - 先执行一次代码块,然后只要指定条件为真则重复循环
  • for - 循环代码块指定次数
  • foreach - 遍历数组中的每个元素并循环代码块

while 循环

  1. while (条件为真) {
  2. 要执行的代码;
  3. }

do…while 循环

do…while 循环首先会执行一次代码块,然后检查条件,如果指定条件为真,则重复循环

  1. do {
  2. 要执行的代码;
  3. } while (条件为真);

PHP for 循环

PHP for 循环执行代码块指定的次数。

for 循环

如果您已经提前确定脚本运行的次数,可以使用 for 循环。

  1. <?php
  2. for ($x=0; $x<=10; $x++) {
  3. echo "数字是:$x <br>";
  4. }
  5. ?>

foreach 循环

foreach 循环只适用于数组,并用于遍历数组中的每个键/值对。

  1. foreach ($array as $value) {
  2. code to be executed;
  3. }

每进行一次循环迭代,当前数组元素的值就会被赋值给 $value 变量,并且数组指针会逐一地移动,直到到达最后一个数组元素。

下面的例子演示的循环将输出给定数组($colors)的值:

  1. <?php
  2. $colors = array("red","green","blue","yellow");
  3. foreach ($colors as $value) {
  4. echo "$value <br>";
  5. }
  6. ?>

PHP 函数

PHP 的真正力量来自它的函数:它拥有超过 1000 个内建的函数。

PHP 用户定义函数

除了内建的 PHP 函数,我们可以创建我们自己的函数。
函数是可以在程序中重复使用的语句块。
页面加载时函数不会立即执行。
函数只有在被调用时才会执行。

在 PHP 创建用户定义函数

用户定义的函数声明以单词 “function” 开头:

  1. function functionName() {
  2. 被执行的代码;
  3. }

注释:函数名能够以字母或下划线开头(而非数字)。
注释:函数名对大小写不敏感。
提示:函数名应该能够反映函数所执行的任务。

  1. <?php
  2. function sayHi() {
  3. echo "Hello world!";
  4. }
  5. sayhi(); // 调用函数
  6. ?>

PHP 函数参数

可以通过参数向函数传递信息。参数类似变量。
参数被定义在函数名之后,括号内部。您可以添加任意多参数,只要用逗号隔开即可。
下面的例子中的函数有一个参数($fname)。当调用 familyName() 函数时,我们同时要传递一个名字(例如 Bill),这样会输出不同的名字,但是姓氏相同:

  1. <?php
  2. function familyName($fname) {
  3. echo "$fname Zhang.<br>";
  4. }
  5. familyName("Li");
  6. familyName("Hong");
  7. familyName("Tao");
  8. familyName("Xiao Mei");
  9. familyName("Jian");
  10. ?>

函数有两个参数($fname 和 $year)

  1. <?php
  2. function familyName($fname,$year) {
  3. echo "$fname Zhang. Born in $year <br>";
  4. }
  5. familyName("Li","1975");
  6. familyName("Hong","1978");
  7. familyName("Tao","1983");
  8. ?>

PHP 默认参数值

下面的例子展示了如何使用默认参数。如果我们调用没有参数的 setHeight() 函数,它的参数会取默认值:

  1. <?php
  2. function setHeight($minheight=50) {
  3. echo "The height is : $minheight <br>";
  4. }
  5. setHeight(350);
  6. setHeight(); // 将使用默认值 50
  7. setHeight(135);
  8. setHeight(80);
  9. ?>

PHP 函数 - 返回值

如需使函数返回值,请使用 return 语句:

  1. <?php
  2. function sum($x,$y) {
  3. $z=$x+$y;
  4. return $z;
  5. }
  6. echo "5 + 10 = " . sum(5,10) . "<br>";
  7. echo "7 + 13 = " . sum(7,13) . "<br>";
  8. echo "2 + 4 = " . sum(2,4);
  9. ?>

return后面的代码不会执行(return只会返回不会输出)
外面调用要echo 才会输出 echo sum(4,6);

形参和返回值类型的约束+PHP7.0新特性

图片.png

  1. <?php
  2. function sum($a,$b){
  3. return $a+$b;
  4. }
  5. var_dump(sum(1,2)); //int 3
  6. ?>

我要把返回值限定为字符串:

  1. <?php
  2. function sum($a,$b):string //这样就对返回值进行了限制,返回字符串类型,同理浮点型float
  3. {
  4. return $a+$b;
  5. }
  6. var_dump(sum(1,2)); //string 3
  7. ?>

对形参的限制:

  1. <?php
  2. function test(...$arr){ //这是PHP新特性里面的东西(php 7以上好像是)
  3. var_dump($arr);
  4. }
  5. test('abc',1,2,3,'bb',123,4,5,6,7);
  6. ?>
  7. //这样就会以数组的方式进行返回
  8. //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) }

图片.png
图片.png

匿名函数

  1. $test=function(){ //没有名字,那我怎么调用呢?前面加一个变量,比如$test=
  2. echo '我是匿名函数';
  3. }; //加分号结束
  4. //调用
  5. $test();

图片.png

PHP内置函数

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

rand()随机数

  1. <?php
  2. $num=rand(1,6); //随机返回1,2,3,4,5,6中的一个
  3. ?>
  4. echo $num;

mt_rand() 产生更好的随机数

什么叫更好的随机数?这个效率比rand高。

  1. <?php
  2. $num=mt_rand(0,5); //随机返回0,1,2,3,4,5中的一个
  3. ?>
  4. echo $num;

PHP 数组

数组能够在单独的变量名中存储一个或多个值。
实例:
数组在单个变量中存储多个值:

  1. <?php
  2. $cars=array("porsche","BMW","Volvo");
  3. echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
  4. ?>

什么是数组?

数组能够在单一变量名中存储许多值,并且您能够通过引用索引号来访问某个值。

在 PHP 中创建数组

array() 函数用于创建数组
在 PHP 中,有三种数组类型:

  • 索引数组 - 带有数字索引的数组
  • 关联数组 - 带有指定键的数组
  • 多维数组 - 包含一个或多个数组的数组

PHP 索引数组

有两种创建索引数组的方法:
索引是自动分配的(索引从 0 开始):
PHP5.4之前:$arr=array();
PHP5.4之后:$arr=[1,2,3,4,5,6];

  1. $cars=array("porsche","BMW","Volvo");

或者也可以手动分配索引:

  1. $cars[0]="porsche";
  2. $cars[1]="BMW";
  3. $cars[2]="Volvo";

获得数组的长度 - count() 函数

count() 函数用于返回数组的长度(元素数)

  1. <?php
  2. $cars=array("porsche","BMW","Volvo");
  3. echo count($cars);
  4. ?>

遍历索引数组

如需遍历并输出索引数组的所有值,您可以使用 for 循环,就像这样

  1. <?php
  2. $cars=array("porsche","BMW","Volvo");
  3. $arrlength=count($cars);
  4. for($x=0;$x<$arrlength;$x++) {
  5. echo $cars[$x];
  6. echo "<br>";
  7. }
  8. ?>

PHP 关联数组

关联数组是使用您分配给数组的指定键的数组。
有两种创建关联数组的方法:
PHP5.4之前:$arr=array()
PHP5.4之后:$arr=[‘java’=>’大数据’,’html’=>’页面’,’php’=>’mysql’];

  1. $age=array("Bill"=>"35","Steve"=>"37","Elon"=>"43");

或者:

  1. $age['Bill']="63";
  2. $age['Steve']="56";
  3. $age['Elon']="47";

随后可以在脚本中使用指定键

  1. <?php
  2. $age=array("Bill"=>"63","Steve"=>"56","Elon"=>"47");
  3. echo "Elon is " . $age['Elon'] . " years old.";
  4. ?>

遍历关联数组

如需遍历并输出关联数组的所有值,您可以使用 foreach 循环,就像这样

  1. <?php
  2. $age=array("Bill"=>"63","Steve"=>"56","Elon"=>"47");
  3. foreach($age as $x=>$x_value) {
  4. echo "Key=" . $x . ", Value=" . $x_value;
  5. echo "<br>";
  6. }
  7. ?>
  8. 运行结果:
  9. Key=Bill, Value=63
  10. Key=Steve, Value=56
  11. Key=Elon, Value=47

图片.png只能用在索引数组,而且索引不能断!

图片.png
list方法(只对索引数组有效)

  1. <?php
  2. $arr=['a','b','c','d','e','f'];
  3. list($a,$b,$c,$d)=$arr;
  4. echo $a,$b,$c,$d; // abcd
  5. ?>

each方法:(会有个索引,也会有个关联的)
图片.png

  1. <?php
  2. $arr=['a','b','c','d','e','f'];
  3. var_dump(each($arr));
  4. var_dump(each($arr));
  5. /*
  6. array(4) {
  7. [1]=>
  8. string(1) "a"
  9. ["value"]=>
  10. string(1) "a"
  11. [0]=>
  12. int(0)
  13. ["key"]=>
  14. int(0)
  15. }
  16. array(4) {
  17. [1]=>
  18. string(1) "b"
  19. ["value"]=>
  20. string(1) "b"
  21. [0]=>
  22. int(1)
  23. ["key"]=>
  24. int(1)
  25. }
  26. */
  27. ?>

可以list、each、while配合去将数组输出:
图片.png

  1. <?php
  2. $arr=['a','b','c','d','e','f'];
  3. while(list($key,$val)=each($arr)){
  4. echo $key.'---'.$val.'<br />';
  5. }
  6. ?>

图片.png

多维数组

我们已经知道数组是一种数/值对的简单列表
不过,有时您希望用一个以上的键存储值
可以用多维数组进行存储

PHP - 多维数组

多维数组指的是包含一个或多个数组的数组
PHP 能理解两、三、四或五级甚至更多级的多维数组。不过,超过三级深的数组对于大多数人难于管理。
注释:数组的维度指示您需要选择元素的索引数。

  • 对于二维数组,您需要两个索引来选取元素
  • 对于三维数组,您需要三个索引来选取元素

    两维数组

    两维数组是数组的数组(三维数组是数组的数组的数组)。
    首先,让我们看看下面的表格:
品牌 库存 销量
Volvo 33 20
BMW 17 15
Saab 5 2
Land Rover 15 11

我们能够在两维数组中存储上表中的数据,就像这样

  1. $cars = array
  2. (
  3. array("Volvo",22,18),
  4. array("BMW",15,13),
  5. array("Saab",5,2),
  6. array("Land Rover",17,15)
  7. );

现在这个两维数组包含了四个数组,并且它有两个索引(下标):行和列。
如需访问 $cars 数组中的元素,我们必须使用两个索引(行和列):

  1. <?php
  2. echo $cars[0][0].": 库存:".$cars[0][1].", 销量:".$cars[0][2].".<br>";
  3. echo $cars[1][0].": 库存:".$cars[1][1].", 销量:".$cars[1][2].".<br>";
  4. echo $cars[2][0].": 库存:".$cars[2][1].", 销量:".$cars[2][2].".<br>";
  5. echo $cars[3][0].": 库存:".$cars[3][1].", 销量:".$cars[3][2].".<br>";
  6. ?>

我们也可以在 For 循环中使用另一个 For 循环,来获得 $cars 数组中的元素(我们仍需使用两个索引):

  1. <?php
  2. for ($row = 0; $row < 4; $row++) {
  3. echo "<p><b>Row number $row</b></p>";
  4. echo "<ul>";
  5. for ($col = 0; $col < 3; $col++) {
  6. echo "<li>".$cars[$row][$col]."</li>";
  7. }
  8. echo "</ul>";
  9. }
  10. ?>

数组的增删改查

图片.png
三维数组:
图片.png

超全局数组

图片.png
图片.png
图片.png
指定post必须用post接收
$_REQUEST(POST和GET都能接收)

  1. <?php
  2. var_dump($_SERVER['HTTP_HOST']);//string(9) "localhost"
  3. ?>

图片.png

PHP 数组排序

数组中的元素能够以字母或数字顺序进行升序或降序排序。

数组的排序函数

  • sort() - 以升序对数组排序
  • rsort() - 以降序对数组排序
  • asort() - 根据值,以升序对关联数组进行排序
  • ksort() - 根据键,以升序对关联数组进行排序
  • arsort() - 根据值,以降序对关联数组进行排序
  • krsort() - 根据键,以降序对关联数组进行排序

    对数组进行升序排序 - sort()

    下面的例子按照字母升序对数组 $cars 中的元素进行排序:
    1. <?php
    2. $cars=array("porsche","BMW","Volvo");
    3. sort($cars);
    4. ?>
    5. 运行结果:
    6. BMW
    7. Volvo
    8. porsche
    按照数字升序对数组 $numbers 中的元素进行排序
    1. <?php
    2. $numbers=array(3,5,1,22,11);
    3. sort($numbers);
    4. ?>
    5. /*
    6. 1
    7. 3
    8. 5
    9. 11
    10. 22
    11. */

    对数组进行降序排序 - rsort()

    1. <?php
    2. $numbers=array(3,5,1,22,11);
    3. rsort($numbers);
    4. ?>

    根据值对数组进行升序排序 - asort()

    对关联数组进行升序排序(对value进行升序):
    1. <?php
    2. $age=array("Bill"=>"63","Steve"=>"56","Elon"=>"47");
    3. asort($age);
    4. ?>
    5. 运行结果:
    6. Key=Elon, Value=47
    7. Key=Steve, Value=56
    8. Key=Bill, Value=63

    根据键对数组进行升序排序 - ksort()

    下面的例子根据键对关联数组进行升序排序:
    1. <?php
    2. $age=array("Bill"=>"63","Steve"=>"56","Elon"=>"47");
    3. ksort($age);
    4. ?>
    5. 运行结果:
    6. Key=Bill, Value=63
    7. Key=Elon, Value=47
    8. Key=Steve, Value=56

    根据值对数组进行降序排序 - arsort()

    根据值对关联数组进行降序排序
    1. <?php
    2. $age=array("Bill"=>"63","Steve"=>"56","Elon"=>"47");
    3. arsort($age);
    4. ?>

    根据键对数组进行降序排序 - krsort()

    下面的例子根据键对关联数组进行降序排序:
    1. <?php
    2. $age=array("Bill"=>"63","Steve"=>"56","Elon"=>"47");
    3. krsort($age);
    4. ?>

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; ?>

  1. 在上面的例子中,由于 z $GLOBALS 数组中的变量,因此在函数之外也可以访问它
  2. <a name="nehHB"></a>
  3. ### PHP $_SERVER
  4. $_SERVER 这种超全局变量保存关于报头、路径和脚本位置的信息
  5. ```php
  6. <?php
  7. echo $_SERVER['PHP_SELF']; //返回当前执行脚本的文件名
  8. echo "<br>";
  9. echo $_SERVER['SERVER_NAME'];//返回当前运行脚本所在的服务器的主机名(比如 www.w3school.com.cn)。
  10. echo "<br>";
  11. echo $_SERVER['HTTP_HOST'];//返回来自当前请求的 Host 头
  12. echo "<br>";
  13. echo $_SERVER['HTTP_REFERER'];//返回当前页面的完整 URL(不可靠,因为不是所有用户代理都支持)。
  14. echo "<br>";
  15. echo $_SERVER['HTTP_USER_AGENT'];//返回浏览器名字
  16. echo "<br>";
  17. echo $_SERVER['SCRIPT_NAME'];//返回当前脚本的路径
  18. ?>
  19. 运行结果:
  20. /example/php/demo_php_global_server.php
  21. www.w3school.com.cn
  22. www.w3school.com.cn
  23. https://www.w3school.com.cn/tiy/s.asp?f=demo_php_global_server
  24. Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0
  25. /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)

图片.png
图片.png
不在同一目录可以写:如——》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);
图片.png

日期函数

图片.png

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