PHP基础知识

数据类型

三大类八小类

标量数据类型

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

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

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

字符串连接符 .

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

复合数据类型

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

特殊数据类型

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

被赋予空值3种情况

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

数据类型转化与检测

数据类型转化

隐式类型转换

<?php
$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是否为数字或数字组成的字符串
<?php
$a = 1;
$b = "2";
echo is_int($a)."<br>"; //输出 1
echo is_bool($b);		//不会输出
?>

获取变量或表达式的信息

使用函数 var_dump();

<?php
$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

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

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

const NAME='tom';
echo NAME;

注意

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

预定义常量

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

变量

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

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

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

变量的赋值

传值赋值

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

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

引用赋值 &

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

<?php
$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 & $bAnd(按位与)将把 $a 和 $b 中都为 1 的位设为 1。
$a | $bOr(按位或)将把 $a 和 $b 中任何一个为 1 的位设为 1。
$a ^ $bXor(按位异或)将把 $a 和 $b 中一个为 1 另一个为 0 的位设为 1。
~ $aNot(按位取反)将 $a 中为 0 的位设为 1,反之亦然。
$a << $bShift left(左移)将 $a 中的位向左移动 $b 次(每一次移动都表示“乘以 2”)。
$a >> $bShift right(右移)将 $a 中的位向右移动 $b 次(每一次移动都表示“除以 2”)。
<?php
$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
<?php
$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 $bAnd(逻辑与)TRUE,如果 $a 和 $b 都为 TRUE
$a or $bOr(逻辑或)TRUE,如果 $a 或 $b 任一为 TRUE
$a xor $bXor(逻辑异或)TRUE,如果 $a 或 $b 任一为 TRUE,但不同时是。
! $aNot(逻辑非)TRUE,如果 $a 不为 TRUE
$a && $bAnd(逻辑与)TRUE,如果 $a 和 $b 都为 TRUE
$a || $bOr(逻辑或)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

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

?>

运算符的优先级

优先级结合方向运算符附加信息
1无结合clone、newclone 和 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. 顺序结构

  1. 选择(分支)结构。

  1. 循环结构 。

选择和循环结构需要特殊的控制语句来实现(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;
}

例题

<?php
$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){
    执行代码
}

=

foreach循环语句

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

break和continute语句

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

<?php
$a = 0;
while($a<10){
    if($a==8){
    break;
    }
    $a++;
    echo $a;

}
?>

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

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

?>

案例

//输出99乘法表
<?php
echo "<table>";
for($i = 1; $i<10; $i++){
    echo '<tr>';
    for($j = 1; $j<=$i;$j++){
        echo"<td>".$j."*".$i."=".$i*$j."</td>";
    }

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

    echo "</tr>";
}
echo "</table>"
?>

函数

库函数

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

数学函数

函数名语法说明
randrand(min,max)返回随机整数
absabs()返回数字的绝对值
minmin(array)返回最小值
maxmax(array)返回最大值
roundround()四舍五入
floorfloor()向下取整
ceilceil()向上取整
powpow(mixed,mixed)返回base的exp次方的值
sqrtsqrt()返回平方根
sinsin()返回正弦值
coscos()返回余弦值
tantan()返回正切值
deg2raddeg2rad()将角度转换为弧度
expfloat exp()返回e的arg幂次方
pipi()返回圆周率

字符串函数

函数用法说明
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)){}
  • 61
    点赞
  • 287
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值