PHP基础知识

数据类型

三大类八小类

标量数据类型

类型 说明
Boolean(布尔值) True 真 ,可以用1表示 False假,可以用0表示
String(字符串型) 连续的字符序列,可以是计算机中能表示的一切字符
Integer(整形) 只能包含整数,可以是正数或负数
Float(浮点型) 有小数位,保存的是近似位,不能参与比较

单引号’ ’不会解析变量,双引号” “会解析变量


    $a = 10;
    echo '$a';//输出 $a
    echo "$a";//输出 10
?>

字符串连接符 .


   echo "连接"."字符串"// 输出 连接字符串
?>

复合数据类型

类型 说明
数组(array) 一组数据的集合
对象(object) 任何事物都可以被看作一个对象

特殊数据类型

类型 说明
资源(resouree) 保存了到外部资源的一个引用
空值(null) 表示没有为该变量设置任何值

被赋予空值3种情况

  1. 没有赋予任何值
  2. 被赋值为null
  3. 被函数unset()处理过的变量

数据类型转化与检测

数据类型转化

隐式类型转换


$a = 1;
$b = "2";
var_dump($a + $b); // 整形
var_dump($a . $b);	//字符串型
var_dump($a+5);		//整形
var_dump($a + 5.21)	//浮点型
?>

显式类型转换

转换函数 转换类型
(boolean),(bool) 强制转换为布尔型
(string) 强制转换为字符串类型
(float),(double),(real) 强制转换为浮点型
(array) 强制转换为数组
(object) 强制转换为对象

注意

  1. 转化成boolean型

    null、0和未赋值的变量或数组,会被转换成False,其他转换成True

  2. 转换成整形

    false转换成0,true转换成1

    浮点型小数部分会被舍去

    字符串如果以数字开头,就会被截取非数字位,否则输出0

  3. 强制转换成整形还可以使用函数 intval() ,转换成字符串可以用strval()

数据类型检测

检测是否为某个数值

函数 检测类型
is_bool 是否为布尔值
is_string 是否为字符串类型
is_float 是否为浮点
is_int 是否为整形
is_null 是否为null
is_object 是否为对象
is_numeric 是否为数字或数字组成的字符串

$a = 1;
$b = "2";
echo is_int($a)."
"
; //输出 1 echo is_bool($b); //不会输出 ?>

获取变量或表达式的信息

使用函数 var_dump();


$a = 100;
$b = "222";
var_dump($a);
var_dump($b);
?>

语言基础

注释与结束符

// 单行注释
/* 多行注释 */
//结束符使用英文分号 ‘;’

常用命令和系统函数

echo

只能输出字符串、数字、布尔类型得数据

var_dump

可以显示一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结

构。

require 与 include

  1. require

    常用于引入 重要 文件,若引入失败会直接影响到当前整个脚本,引入失败报 Error错误。

  2. include

    常用于引入 普通 文件,若引入失败不会对当前脚本有较大的影响,引入失败报 Warning错误。

  3. require_once

    只能引入一次,其他的同require

  4. include_once

    只能引入一次,其他的同include

变量与常量

常量

常量是程序在执行期间无法改变的数据。常量的作用域是全局的。

一般常量都为大写字母,常量名前没有$符,分为自定义常量和预定于常量

自定义常量

用define()函数定义常量:

define(常量名,值,[是否区别大小写]) true表示不区分大小写,默认是false


define('NUMBER',521);
echo NUMBER;
?>

还可以使用const关键字定义常量

const NAME='tom';
echo NAME;

注意

1、定义常量有两种方式,define()和const
2、常量在整个运行过程中值保持不变,常量不能重新定义
3、使用constant获取特殊字符做的常量名的值
4、defined()用来判断常量是否被定义

预定义常量

echo PHP_VERSION,'
'
; //PHP版本号 echo PHP_OS,'
'
; //PHP操作系统 echo PHP_INT_MAX,'
'
; //PHP中整型的最大值 echo __LINE__,'
'
; //获取当前行号 echo __FILE__,'
'
; //文件的完整路径和文件名 echo __DIR__,'
'
; //文件所在的目录 ?>

变量

由 $ 和后面的字符组成。一个有效的变量名由 字母或下划线开头,后面跟任意数字或字母

//合法的命名
$a = 1;
$a_ = 1;
$_a  =1 ;

//非法的命名
$123 = 1;
$12a = 1;
$*a = 1;

变量的赋值

传值赋值

将一个变量的值赋给另一个变量


$a = 10;
$b = $a;
echo $a;
echo $b
?>

引用赋值 &

一个变量引用另一个变量的值,两个变量共享一块内存,当一个数据变时,另一个也会变


$a = 10;
$b = &$a;
$b =20;
echo $a;
echo $b
?>

可变变量

一个可变变量获取了一个普通变量的值作为这个可变变量的变量名。

$a = '我是大哥';
$$a = '我是小弟';
echo "$我是大哥"

//或
    
$a = '我是大哥';
$$a = '我是小弟';
echo ${
     $a};

运算符

算术运算符

例子 名称 结果
-$a 取反 $a 的负值。
$a + $b 加法 $a 和 $b 的和。
$a - $b 减法 $a 和 $b 的差。
$a * $b 乘法 $a 和 $b 的积。
$a / $b 除法 $a 除以 $b 的商。
$a % $b 取模 $a 除以 $b 的余数。
$a ** $b 求幂 $a 的 $b次方的值. PHP 5.6版本中引入.

除法运算符总是返回浮点数。只有在下列情况例外:两个操作数都是整数(或字符串转换成的整数)并且正好能整除,这时它返回一个整数。

取模运算符的操作数在运算之前都会转换成整数(除去小数部分)。

取模运算符 % 的结果和被除数的符号(正负号)相同。即 $a % $b 的结果和 $a 的符号相同。

赋值运算符

运算符 例子
= $a = $b
+= $a += 1
-= $a -=1
*= $a *= 1
/= $a /= 1
%= $a %= 1
.= $a .= abc

位运算符

例子 名称 结果
$a & $b And(按位与) 将把 $a 和 $b 中都为 1 的位设为 1。
$a | $b Or(按位或) 将把 $a 和 $b 中任何一个为 1 的位设为 1。
$a ^ $b Xor(按位异或) 将把 $a 和 $b 中一个为 1 另一个为 0 的位设为 1。
~ $a Not(按位取反) 将 $a 中为 0 的位设为 1,反之亦然。
$a << $b Shift left(左移) 将 $a 中的位向左移动 $b 次(每一次移动都表示“乘以 2”)。
$a >> $b Shift right(右移) 将 $a 中的位向右移动 $b 次(每一次移动都表示“除以 2”)。

$a = 9;         //二进制编码1001
$b = 12;        //二进制编码1100
echo $a & $b;   //转换为1000,输出 8
echo $a | $b;   //转换为1101,输出 13
echo $a ^ $b;   //转换为0101,输出 5
echo ~$aa;      //输出-10
echo $a<<2;     //转换为 100100,输出 36
echo $b>>2;     //转化为11,输出 11

?>

自增或自减运算符

例子 说明
++$a 先加1,后赋值
$a++ 先赋值,后加1
–$a 先减1,后赋值
$a– 先赋值,后减1

$a = 9; 
echo ++$a; //输出10

$a = 9; 
echo $a++;  //输出9
echo $a		//输出10

$a = 9;
echo --$a; //输出8

$a = 9;
echo $a--; //输出9
echo $a;	//输出8
?>

逻辑运算符

例子 名称 结果
$a and $b And(逻辑与) TRUE,如果 $a 和 $b 都为 TRUE
$a or $b Or(逻辑或) TRUE,如果 $a 或 $b 任一为 TRUE
$a xor $b Xor(逻辑异或) TRUE,如果 $a 或 $b 任一为 TRUE,但不同时是。
! $a Not(逻辑非) TRUE,如果 $a 不为 TRUE
$a && $b And(逻辑与) TRUE,如果 $a 和 $b 都为 TRUE
$a || $b Or(逻辑或) TRUE,如果 $a 或 $b 任一为 TRUE

比较运算符

例子 名称 结果
$a == $b 等于 TRUE,如果类型转换后 $a 等于 $b。
$a === $b 全等 TRUE,如果 $a 等于 $b,并且它们的类型也相同。
$a != $b 不等 TRUE,如果类型转换后 $a 不等于 $b。
$a <> $b 不等 TRUE,如果类型转换后 $a 不等于 $b。
$a !== $b 不全等 TRUE,如果 $a 不等于 $b,或者它们的类型不同。
$a < $b 小与 TRUE,如果 $a 严格小于 $b。
$a > $b 大于 TRUE,如果 $a 严格大于 $b。
$a <= $b 小于等于 TRUE,如果 $a 小于或者等于 $b。
$a >= $b 大于等于 TRUE,如果 $a 大于或者等于 $b。
$a <=> $b 结合比较运算符 当$a小于、等于、大于than $b时 分别返回一个小于、等于、大于0的integer 值。 PHP7开始提供.

三元运算符

表达式1?表达式2:表达式3


$score  = 65;
echo $score>60?'及格':'不及格';

?>

运算符的优先级

优先级 结合方向 运算符 附加信息
1 无结合 clone、new clone 和 new
2 从右向左 ** 算术运算符
3 从右向左 ++、–、~、(int)、(float)、(string)、(array)、(object)、(bool)、@ 类型、递增/递减、错误控制
4 无结合 instanceof 类型
5 从右向左 ! 逻辑运算符
6 从左向右 *、/、% 算术运算符
7 从左向右 +、-、. 算术运算符和字符串运算符
8 从左向右 <<、>> 位运算符
9 无结合 <、<=、>、>= 比较运算符
10 无结合 、!=、=、!==、<>、<=> 比较运算符
11 从左向右 & 位运算符和引用
12 从左向右 ^ 位运算符
13 从左向右 | 位运算符
14 从左向右 && 逻辑运算符
15 从左向右 || 逻辑运算符
16 从右向左 ?? null 合并运算符
17 从左向右 ? : 三元运算符
18 从右向左 =、+=、-=、*=、**=、/=、.=、%=、&=、|=、^=、<<=、>>= 赋值运算符
19 从左向右 and 逻辑运算符
20 从左向右 xor 逻辑运算符
21 从左向右 or 逻辑运算符

流程控制语句(3种)

  1. 顺序结构

PHP基础知识_第1张图片

  1. 选择(分支)结构。

PHP基础知识_第2张图片

  1. 循环结构 。

    PHP基础知识_第3张图片

选择和循环结构需要特殊的控制语句来实现(3种)

  • 条件控制语句:if、else、elseif、switch
  • 循环控制语句:while、do…while、for、foreach
  • 跳转控制语句:break、continue、retrun

条件控制语句

if条件控制与语句

单 if 语句结构

if(条件){
     
    执行代码
}

if…else…语句结构

if(条件){
     
    执行代码1
}else{
     
    执行代码2
}

if…elseif…语句结构

if(条件1){
     
    执行代码1
}elseif(条件2){
     
    执行代码2
}elseif(条件3){
     
    执行代码3
}else{
     
    执行代码4
}

switch多分支语句

switch(条件){
    case 条件1:
    	执行代码1;
   	    break;
   	case 条件2:
    	执行代码2;
   	    break;
   	case 条件3:
    	执行代码3;
   	    break;
   	default:
   		执行代码4;
}

例题


$score  = 100;
switch($score){
     
    case $score>=60&&$score<=99:
        echo '及格';
        break;
    case $score<60&&$score>=0:
        echo'不及格';
        break;
        
    default:
         echo'啊这'; 
}

?>

循环控制语句

while循环语句

while(条件){
     
    执行代码;
}

do…while循环语句

do{
     
    执行代码;
}while{
     条件}  //先做再判断

for循环语句

for(条件1;条件2;条件3){
     
    执行代码
}

PHP基础知识_第4张图片=

foreach循环语句

格式:foreach(array as $key => $value)

break和continute语句

当执行到break语句时结束当前循环


当执行到continue语句时跳过当前循环,执行下次循环


$a = 0;
for($i = 0; $i<10; $i++){
     
    if($i==5){
     
        continue;
    }
    echo $i;
}

?>

案例

//输出99乘法表

echo "";for($i=1;$i<10;$i++){
     echo'';for($j=1;$j<=$i;$j++){
     echo"";}echo"";}echo"
".$j."*".$i."=".$i*$j."
"
?> //输出上三角九九乘法表 echo "";for($i=1;$i<10;$i++){ echo'';for($j=$i;$j<=9;$j++){ echo"";}echo"";}echo"
".$j."*".$i."=".$i*$j."
"
?>

函数

库函数

库函数分为数学函数、字符串函数、数组函数、目录函数、文件系统函数、时间函数和错误处理函数等几类

数学函数

函数名 语法 说明
rand rand(min,max) 返回随机整数
abs abs() 返回数字的绝对值
min min(array) 返回最小值
max max(array) 返回最大值
round round() 四舍五入
floor floor() 向下取整
ceil ceil() 向上取整
pow pow(mixed,mixed) 返回base的exp次方的值
sqrt sqrt() 返回平方根
sin sin() 返回正弦值
cos cos() 返回余弦值
tan tan() 返回正切值
deg2rad deg2rad() 将角度转换为弧度
exp float exp() 返回e的arg幂次方
pi pi() 返回圆周率

字符串函数

函数 用法 说明
trim() trim(字符串,特殊符) 去除字符串首位空白等特殊符号
strtolower() 转换为小写
strtoupper() 转换为大写
htmlspecialchars() 格式化字符串中得html标签
strip_tags() 函数剥去HTML、XML以及PHP的标签
md5() 计算字符串的MD5散列值
strlen() 字节长度utf8编码西文:1字节,汉字:3字节
mb_strlen() 字符个数
strstr 查找字符串的首次出现,开始向后截取全部,并返回
substr() 字符串截取函数(中文乱码)
mb_substr() mb_substr(字符串,索引) 字符串截取函数(中文不乱码)
strpos() 查找字符串在另一字符串中第一次出现的位置
stripos() 查找字符串在另一字符串中最后一次出现的位置
str_replace() str_replace(被替换字符串,替换字符串,字符串) 字符串替换函数
str_repeat() str_repeat(字符串,次数) 重复一个字符串
ltrim()、trim()、rtrim() 去除左侧、两侧、右侧多余字符(默认删除空格)
explode(符号,字符串) 字符串拆分成数组
implode(符号,数组) 数组合并成字符串
md5()、sha1() 加密

数组转JSON

函数 说明
json_encode(数组) JSON格式编码
json_decode(字符串,参数) 对JSON格式的字符串进行解码,参数: true:返回数组 ;false:返回对象

数组函数

函数 功能
array_values 数组中所有的值放入一个新的索引数组,并返回
array_keys() 数组中所有的键放入一个新的索引数组,并返回
array_reverse() 颠倒数组顺序
in_array(元素,数组) 检查数组中是否存在某个值
count() 计算数组中的单元数目或对象中的属性个数
array_unshift() 在数组开头插入一个或多个元素
array_push() 在数组结尾插入一个或多个元素
array_pop() 删除数组最后一个元素
array_shift() 删除数组开头的元素
array_unique() 移除数组中重复的值
array_splice(数组,索引, 数量) 删除指定元素
sort() 排序(升序)
rsort() 排序(降序)
array_merge() 合并一个或多个数组

变量的作用域

局部变量

在函数内部定义,只作用于函数内部

全局变量

在函数外部定义,作用与当前整个脚本,在函数内部使用需要使用global关键声明

$a = 10;
function sum(){
     
    global $a;
    $a++;
    retrun $a;
}
$a =sum();
echo $a

引用变量传参

使用 global 命令,将全局变量引入到函数内部,但这种方式不够灵活,可以使用引用变量的方法。

//定义变量时,用&修饰参数
$a = 10;
function fn(&$arg){
     
    $arg++;
}
fn($a);
var_dump($a);

静态变量

在函数内部定义,作用于函数内部,使用static关键字声明。

function fn(){
     
    static $a = 1;
    $a++;
    echo $a;
}
fn();//2
fn();//3
fn();//4

正则表达式

元字符 说明
a-z 英文小写字母
A-Z 英文大写字母
0-9 数字
\r \n \t 非打印字符
\d 数字,相当于0-9
\D \d取反
\w 字母数字下划线
\W \w取反
\s 空白字符
\S 非空白字符
[] 任意匹配[]中单个字符
. 匹配任意字符(换行符除外)
{n} 匹配n次
{n,} 匹配至少n次
{n,m} 至少n次,最多m次
* 匹配0个或多个,相当于{0,}
+ 匹配1个或多个,相当于{1,}
? 匹配0个或1个,相当于{0,1}
^ 1、匹配正则开头 2、放在[^],内容取反
$ 匹配正则结尾
| 匹配|两侧任选其一
() 1.分组 2.子存储

连库操作

//连接数据库
$link = @mysqli_connect('服务地址','帐户','密码','数据库名称','端口号');

//测试
if($link){
echo '连接成功';
}else{
die('错误信息:'.mysqli_error($link));
}

//简写
$link = @mysqli_connect('服务地址','帐户','密码','数据库名称','端口号') or die('连接失败:'.mysqli_error());

//设置字符集
mysqli_set_charset($link,'字符集');

//执行操作
$sql = insert into 表名 values()//增
$sql = delete from 表名 where 条件//删
$sql = update 表名 set 更新字段='数据' where 条件//改
$sql = select 查询字段 from 表名 where 查询条件 //查
mysqli_query($link,$sql)

//关闭数据库
mysqli_close($link)

数据操作用到的函数

mysqli_query();执行SQL语句
mysqli_insert_id();获取插入自动增长的ID
mysqli_affected_rows();获取受影响的记录数
mysqli_error();获取执行SQL语句的错误信息
mysqli_erron();获取SQL语句的错误码

数据操作用到的函数

mysqli_fetch_assoc();将一条数据匹配关联数据
mysqli_fetch_row();将一条记录匹配成索引数据
mysqli_fetch_array();将一条记录匹配成既有关联数组又有索引数组
mysqli_fetch_all();匹配所有记录
mysqli_num_rows():总行数
mysqli_num_fields():总记录数
mysqli_free_result():销毁结果集
mysqli_close():关闭连接

页面跳转

//PHP
header("refresh:秒数;url=跳转地址")//等待秒数
header("Location:跳转地址")//直接跳转
//js
window.location.href=URL//在本窗体打开一个新的页面,也是最常用的一种方法;

window.open(URL)//在一个新的窗口打开一个新的页面;

location.replace(URL)//本窗口的页面被替换为一个新的页面URL,替换后不可以回退到上个页面;

localtion.assign(URL)//本窗口的页面转为为一个新的页面URL,与上一方法类似,但此方法可回退至上一页面。

//jQ
1.我们可以利用http的重定向来跳转
window.location.replace("URL");

2.使用href来跳转

window.location.href = "URL";

判断页面点击提交按钮后接收方式为$_POST

//方式一
if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
     }
//方式二
if(!empty($_POST)){
     }


mysqli_error();获取执行SQL语句的错误信息
mysqli_erron();获取SQL语句的错误码


## 数据操作用到的函数

```mysql
mysqli_fetch_assoc();将一条数据匹配关联数据
mysqli_fetch_row();将一条记录匹配成索引数据
mysqli_fetch_array();将一条记录匹配成既有关联数组又有索引数组
mysqli_fetch_all();匹配所有记录
mysqli_num_rows():总行数
mysqli_num_fields():总记录数
mysqli_free_result():销毁结果集
mysqli_close():关闭连接

页面跳转

//PHP
header("refresh:秒数;url=跳转地址")//等待秒数
header("Location:跳转地址")//直接跳转
//js
window.location.href=URL//在本窗体打开一个新的页面,也是最常用的一种方法;

window.open(URL)//在一个新的窗口打开一个新的页面;

location.replace(URL)//本窗口的页面被替换为一个新的页面URL,替换后不可以回退到上个页面;

localtion.assign(URL)//本窗口的页面转为为一个新的页面URL,与上一方法类似,但此方法可回退至上一页面。

//jQ
1.我们可以利用http的重定向来跳转
window.location.replace("URL");

2.使用href来跳转

window.location.href = "URL";

判断页面点击提交按钮后接收方式为$_POST

//方式一
if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
     }
//方式二
if(!empty($_POST)){
     }

你可能感兴趣的:(php,编程语言)