PHP基本语法
PHP是超文本预处理器 由服务器解析执行 可以与 html 进行混编(嵌入) ,PHP是一种弱类型语言
1.1 PHP标记
// 第一种(推荐使用)
<?php
// 第二种:纯 php 文件
<?php
//其它标记 (了解)
<? ... ?> // 短格式此类型需要在php.ini 中开启
<script laguage=”php”>....</script>
1.2 语法规则
由于我们在apache的主配置文件中设置了php文件的扩展名.php,
- 所以所有的php文件的扩展名都是
.php
- php文件必须通过域名访问,php文件中不能包含中文
- php每一条语句后必须有
;
- php中的变量名必须区分大小写,其余的函数名、方法名、类名都不区分大小写,但建议区分。
1.3 注释
-
单行注释使用
//注释内容
-
多行注释
/* 多行注释*/
多行注释不能嵌套
变量及操作
PHP是弱类型语言,变量的类型通常是根据该变量的值决定
-
PHP中以 $ 作为前缀来定义变量,以a~z(大小写)或 _ 下划线定义变量名
-
变量是内存中用于临时存储值空间,称为变量名。变量名是用于对这个内存中的数据进行引用的
-
在大多数编程语言中,变量只能保持一种类型的数据,而且这个类型必须在使用变量前声明,例如C语言中。
-
在PHP中,变量的类型通常是根据该变量使用的上下文在运行时(即变量的值)决定的。
简单来说,var = 1;就是数字,var2 = '1’就是字符串,变量类型是由值决定的。
语法:
$变量名=值;
说明:
必须以$符开头
变量名只能包含字母、数字、下划线,只能以字母、下划线开头,不能以数字开头(数字不能紧挨着$)
变量严格区分大小写
<?php
// 定义变量
$v1 = 1;
$v2 = 1;
$result = $v1 + $v2;
echo $result;
传值与引用
传值赋值
直接使用 =
将变量的值赋值给另一个变量。
$a = 1;
$b = $a;
$b = 2;
echo $a;//结果是1
引用赋值
将一个变量的内存地址赋值给另一个变量的行为即传址赋值。需要在 =
等号前加上 &
引用符号,这样两个变量指向内存中的同一个地址,任何一个变量的改变都影响到另一个变量,有点类似于快捷方式的概念。
改变其中任何一个变量的值 另一个也会随着改变
Unset 其中任何一个变量的值 另一个不变
值类型:除对象
引用类型:对象
使用 &
引用 给一个变量起了一个别名
$a = 1;
$b = &$a;
$b = 2;
echo $a;//结果是2
2.声明八进制与十六进制整型
//声明八进制 以 0 开头 后面跟 0-7 组成
$a = 012;
var_dump($a);
//声明十六进制 以 0x 开头 后面跟 0-9a-f 组成
$b = 0xaf;
var_dump($b);
可变变量
将一个变量的值 作为 另一个变量的名称($$ a 写 法 读 法 从 右 往 左 一 个 a 写法 读法 从右往左 一个 a写法读法从右往左一个一个$读)
- 通过一个变量访问另一个变量
// 通过一个变量访问另一个变量
<?php
// 定义变量
$v = 'age';
$age = 20;
echo $v; // $v 解析为age
echo $$v; // $v 解析为age $$v 解析为$age
- 通过一个变量创建另一个变量
// 通过一个变量创建另一个变量
<?php
// 定义变量
$v = 'age';
$$v = 20;
echo $age; // 20
静态变量
使用关键字static声明一个静态变量,对该函数的调用之间共享,并且仅在第一次被调用赋予初始值。
<?php
/**
* 静态变量
*/
function make() {
$num = 1;
$num = $num + 1;
return $num .'<br>';
}
echo make(); // 2
echo make(); // 2
echo make(); // 2
echo '<hr>';
function show() {
static $num = 1; // 相当于只在第一次函数调用才执行
$num = $num+1;
return $num .'<br>';
}
echo show(); // 2
echo show(); // 3
echo show(); // 4
变量作用域
变量作用域指变量在代码中可以访问的位置。
超全局变量
可以代码的任何位置都可以访问的变量
变量 | 说明 |
---|---|
$_GET |
地址栏GET提交 |
$_POST |
表单POST提交 |
$_FILES |
文件上传变量(form表单中添加属性enctype="multipart/form-data"> ) |
$_SESSION |
session会话变量 |
$_COOKIE |
cookie值变量 |
$_GLOBALS |
全局变量 |
$_REQUEST |
包含$_GET、$_POST、$_COOKIE |
$_SERVER |
服务器环境变量 |
全局变量
全局声明(函数外声明)的变量会保存在 $_GLOBALS
中,函数内默认不能访问到全局变量,在函数中访问需要使用 global
关键字。
$hd='后盾人';
function p() {
//利用 global 引入全局变量
global $hd;
echo $hd;
}
p();
也可以使用全局数组$GLOBALS调⽤用全局变量量。 如:$GLOBALS['hd']
;
检测变量
通过isset 函数可以检测变量是否定义。
var_dump(isset($name));
// 结果是false
变量销毁
php在全部代码执行结束后会删除所有变量,也使用 unset
函数可以在程序运行中删除变量。
$name='houdunren.com';
unset($name); // 删除变量就是将变量从内存中销毁
全局变量不能在函数中删除
$name = 'houdunren.com';
function run()
{
global $name;
unset($name);
}
run();
echo $name;
// 依然可以输出 houdurnen.com
在所有输出前使用下面的代码可以正确显示中文:
header('Content-type:text/html;charset=utf-8');
定义符
定界符文本表现的就和双引号字符串一样,在定界符文本中不需要转义引号,适合输入大量文本。
结束符必须从第一列开始,并且后面除了分号以外不能包含任何其他字符,空格也不可以。
$string =<<<str
这是使用定界符输入的内容
str;
echo $string;
连接符
多个字符串使用 .
符号连接
$name = '后盾人';
$url = 'houdunren.com';
echo $name.$url;
转义
转义是将有多种含义的字符进行转换,比如 $即是变量前缀也是美元符号,就需要转义在不同场景进行改变。
echo "变量定义 \$name = 'houdunren.com',学会了吗?";
常量
常量是一个简单值的标识符(名字)。常量默认为大小写敏感。按照惯例常量标识符总是大写的。
声明常量
语法1:
define(‘常量名称’, 常量值) 值是标量
define(‘常量名称’, 常量值,false) 代表严格区分大小写
语法2:
const 常量名称=值;
常量特性
- 常量前面没有美元符号($)
- 常量只能用define() 函数定义,而不能通过赋值语句(const)
- 常量一旦定义就不能被重新定义或者取消定义
- 常量的值用来定义 整型,浮点,字符串,布尔值,数组(PHP7新增)
- 常量可以不用理会变量范围的可以在任何位置访问
- 常量也可以定义成为数组形式
<?php
const PI = 3.14125;
echo PI;
define('NAME','张三');
// defined检测常量是否已经定义
if (defined('NAME')) {
echo NAME.'<br>';
}
// 常量也可以定义成为数组形式
define('CITY',['北京','上海','杭州']);
var_dump(CITY);
define 与 const区别
- 使用
const
关键字定义常量必须处于最顶端的作用区域,这就意味着不能在函数内 - define语法可以在分支结构中定义常量,const不允许的。
- define定义的常量可以自定义是否区分大小写。
<?php
if (true) {
# code...
define('PI',3.1415); // 正确语法
const PI = 3.14125; // 错误语法
}
define('PI', 3.1415);
echo Pi.'<br>'; // 报错
// 如果define的第三个参数设置为true, 则不区分大小写
define('PI', 3.1415, true);
isset 和 empty 的区别
Isset 判断一个变量是否被定义,null 的三种情况(赋值为 null,未定义的变量,unset 掉的变量),则isset 返回假
empty 判断一个变量是否为空,null 的三种情况和 布尔false 的几种情况都为真,其他均为假
Isset() 检测变量是否设置
Empty() 检测变量是否是空
// empty检测一个变量是否为空 ,若空为true 不空为false
$a = "4"; /*即使输入零也不是空,显示为true*/
var_dump(empty($a));
// isset检测变量是否设置
$b = "";
var_dump