PHP基础

准备

下载安装XAMPP

参考

https://study.163.com/course/courseMain.htm?courseId=1004572025

点击前两个Module的start

之后在浏览器输入‘127.0.0.1’(127.0.0.1是回送地址,指本地机,一般用来测试使用)。出现

编写PHP文件

文件存放位置

找到安装的xampp文件夹中的htdocs文件夹,里面存放的文件即上图输入127.0.0.1后出现的页面

将‘index.php’文件删除(网站默认打开网站的首页),添加新文件‘test.php’

刷新,可看到

PHP与HTML的混写

PHP的代码在‘’之间,可以加入HTML混写;在此范围外的代码为html

运行结果

查看网页源代码

若文件内容是纯PHP文件,则最好在文件末尾删除PHP结束标记 ?> ,这可以避免在 PHP 结束标记之后万一意外加入了空格或者换行符,会导致 PHP 开始输出这些空白,而脚本中此时并无输出的意图。

则发现:

写的PHP代码文件在服务端解析,成为HTML文件,再发送给客户端

语法

hello world

<?php
echo 'hello world';
?>

//这是注释
#这也是注释
/*多行
注释 */

1.以标记 结束
2.echo为输出语句,能够输出一个以上的字符串;echo有无括号均可使用
3.‘;’,PHP 需要在每个语句后用分号结束指令。一段 PHP 代码中的结束标记隐含表示了一个分号;在一个 PHP 代码段中的最后一行可以不用分号结束。

若将上述代码改为

在浏览器发现报错,错误出现在第四行

这是因为第二行没有‘;’结束指令,一直到第四行才检测到第二行的echo语句并不是代码最后一行

变量

变量由 $ 与其后的变量名组成,不用声明,直接赋值,区分大小写

赋值方式

变量有两种赋值方式,默认为传值赋值,即将一个变量的值赋值给另一个变量,改变其中一个变量的值,不会影响到另一个变量的值;

还有一种为引用赋值,改动新变量将影响到原始变量;引用时,将 & 加到需引用的变量前

<?php

$a = 1;
$b = &$a;
$b = 2;
echo $a;

?>

输出结果为

2

可变变量

global与$GLOBALS

global可以定义全局变量

注意:在函数体外定义的global变量不能在函数体内使用

<?php
$a=1;
function hanshu()
{
    global $a;
    $a += 1;
}
hanshu();
echo $a;
?>

#输出2

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

<?php
$b = 2;
$a=0;
function hanshu()
{
    $GLOBALS['a']=$GLOBALS['b']+1;
}
hanshu();
echo $a;
?>

数据类型

布尔类型

TRUE及FLASE

可以使用bool()或boolean()来将一个值强制转换为布尔类型

字符类型

单引号或双引号括起来的

输出的区别

单引号不会考虑字符串是否包含变量

双引号中如果包含变量,则会将变量替换为变量的值

数组

定义一个数组

$array = array('foo' => 'bar')

或(推荐使用)

$array = ['foo' => 'bar']

可以将数组定义为索引数组、关联数组

上述代码为关联数组,键的名是明确的

索引数组:

$a = [1,2,3]

在PHP文件中

<?php
$a = ['q' => 1,2,3];
var_dump($a)
?>

在浏览器运行显示:

array(3) { ["q"]=> int(1) [0]=> int(2) [1]=> int(3) }

表示:

1.有三个元素
2.键‘q’对应整型的‘1’;值‘2’‘3’没有键,则键名默认从零开始

键的名是从0开始(下标)

数组操作
$a = [1,2,3]

#增加
$a[3] = 4

#更改
$a[0] = '1'

#删除
unset($a[0])

#输出值
echo $a[0]

键的名称重复是,后面的会覆盖前面的


NULL

表示一个变量没有值,NULL类型唯一的值就是不区分大小写的NULL

在下列情况下一个变量被认为是 NULL:

被赋值为 NULL。 


尚未被赋值。


被 unset()。 (销毁变量)

数据类型函数

var_dump()

可以查看某个表达式的值和类型

gettype()

获取表达式的类型

is_type()

验证某个类型,如is_int($a)验证变量a是否为整型

运算符

.

使用 . 可以拼接字符串、变量与字符串、变量与变量

==

比较数字与字符串时会将字符串转化为数值再进行比较

===

比较类型以及值是否相等

and或&&

or或||

数据接收与发送

新建一个sent.php文件和一个get.php文件

send.php:

< DOCTYPE html >
< html >
< head >
    < title >
        hello
    < /title >
< /head >
< body >
    < form action='get.php', method='post' >
        < input type='text', name='a' >
        < input type='text', name='b' >
        < input type='submit', value='确定' >
    < /form >

< /body >
< /html >

get.php:

<?php

var_dump($_POST['a']);

var_dump($_POST['b']);

?>

在send.php中,创建了form表单用来向服务器提交数据,定义了两个文本框和一个提交按钮,点提交时,数据将被提交到from表单action定义的PHP文件,提交的方法为post;将两个文本框分别命名为a和b,以便用来接收内容

在get.php中,使用$_POST用来接收客户端发送来的数据,接收a和b的数据;直接使用‘$_POST’接收的数据类型为数组类型,使用$_POST[‘a’]得到数组的键‘a’对应的值,为字符串类型

在浏览器打开send.php文件,两个文本框分别输入111和222,然后点击确定

会被跳转到

可以看到,刚刚提交的数据显示到了页面上,url显示get.php文件

把send.php中的提交方法post改为get,get.php中的接收函数$_POST改为$_GET,再次提交

发现提交的数据依旧显示到了页面上,不过发现url的get.php后,多出来

?a=111&b=222

这些内容,发现:

使用get提交的数据会显示在url中,而使用post提交的数据不会显示在url中