目录
一. 简介
PHP(全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器")是一种通用开源脚本语言。PHP 文件可包含文本、HTML、JavaScript代码和 PHP 代码。其在服务端执行,结果以纯 HTML 形式返回给浏览器。
因为PHP是运行在服务端的语言,所以我们先要搭建一个web服务,然后在网站下面写php文件。
二. php语法
基础语法
php的语句都写在 <?php 语句 ?>中。语句必须以分号;结尾
注释符
- //
- #
- /*多行注释*/
变量
- 变量名:必须以$开头
- 变量名:组成部分a-z A-Z 0-9 下划线,但是不能以数字开头
- 变量名区分大小写(HTML不区分大小写)
变量类型
- 整型: -1 2 3 4 integer
- 浮点数: 就是小数 1.1 2.1 double
- 字符串: "www.baidu.com" string
- 布尔: boolean ,即true和false
- 数组: array(...)
- NULL: 空类型
isset和var_dump
-
<?php
-
$a =
'xcc';
-
echo
isset($a);
#判断是否给变量赋值,是的话返回1,否则什么都不返回
-
var_dump($a);
#判断一个变量的类型和长度,并输出变量的值
-
var_dump(
isset($b))
-
?>
gettype 输出变量的类型
-
<?php
-
$a =
'xcc';
-
echo gettype($a);
-
?>
运算符
和其他语言也差不多
-
#数学运算符
-
echo
"<br/>" 进行换行,
echo默认不换行
-
+ - * / 加减乘除
-
% 取余
-
++ --
-
-
#比较运算符(返回boolean类型)
-
> >= < <= != == 其他语言通用
-
=== 恒等于,值和数据类型都相同
-
!==
变量++ 先运算,再加1
++变量 先加1,再运算
$a++
-
<?php
-
$a =
1;
-
$c = $a++;
#先把a的值赋给c,再执行a加1,所以c的值为1,a的值为2
-
echo $c;
#输出1
-
echo
"<br/>";
-
echo $a;
#输出2
-
?>
++$a
-
<?php
-
$a =
1;
-
$c = ++$a;
#a的值先加1变成了2,再赋值给c,所以c和a的值都为2
-
echo $c;
#输出2
-
echo
"<br/>";
-
echo $a;
#输出2
-
?>
注意:python中没有++或者--这个运算符,只有 a+=1 这种
===和==
- === 恒等于,即值和数据类型都要相同才为真,否则false。对立的为 !==,恒不等于
- == 等于,只要值相同就是真 。对立的为 != ,不等于
-
<?php
-
$a =
22;
-
$b =
'22';
-
var_dump($a==$b);
#输出bool(true)
-
echo
"<hr/>";
-
var_dump($a===$b);
#输出bool(false)
-
?>
三元运算符
运算式?值1:值2 #如果运算式为真,则输出值1,否则输出值2
-
<?php
-
$a =
22;
-
$b =
30;
-
echo $a>$b?
"yes":
"no"
-
?>
-
>>输出 no
逻辑运算符
- && 与,都为真,则为真(有一个假则为假)
- || 或,有一个真则为真
- ! 非,就是取反的意思
-
<?php
-
$a =
true;
-
$b =
false;
-
var_dump($a && $b);
#输出bool(false)
-
-
echo
"<br/>";
-
$a =
false;
-
$b =
false;
-
var_dump($a && $b);
#输出bool(false)
-
-
echo
"<br/>";
-
$a =
true;
-
$b =
false;
-
var_dump($a || $b);
#输出bool(true)
-
-
echo
"<br/>";
-
$a =
true;
-
var_dump(!$a);
#输出bool(false)
-
?>
字符串运算符
php的字符串运算符是一个.号,就是将字符串就行拼接,像python中进行字符串拼接直接用+就可以了。
-
<?php
-
$a =
"https://";
-
$b =
"www.baidu.com";
-
$c = $a.$b;
#php中不能用+号
-
echo $c
#输出https://www.baidu.com
-
?>
选择结构
1. if语句
-
<?php
-
$a =
3;
-
if($a>
5){
-
echo
'哈哈';
-
}
else
if($a>
4){
-
echo
'呵呵';
-
}
else{
-
echo
'嘿嘿';
-
}
-
echo
"<hr/>";
-
echo
"结束";
-
?>
在python中则:
-
if a>b:
-
print(
'xxx')
2. switch语句
很多场合下需要把同一个变量(或表达式)与很多不同的值比较,并根据它等于哪个值来执行不同的代码。这正是 switch
语句的用途。
-
switch (expression){
-
case label1:
-
expression = label1 时执行的代码 ;
-
break;
//跳出整个循环,不再执行下面的语句
-
case label2:
-
expression = label2 时执行的代码 ;
-
break;
-
default:
-
表达式的值不等于 label1 及 label2 时执行的代码;
-
}
-
<?php
-
$a =
2;
-
switch($a>
1){
#这里$a可以为变量,也可以为表达式(此时下面的 case后面也要跟着同样的表达式)
-
case $a>
1:
-
echo
"a=1";
-
echo
"<hr/>";
-
break;
-
case
2:
-
echo
"a=2";
-
echo
"<hr/>";
-
break;
-
case
3:
-
echo
"a=3";
-
echo
"<hr/>";
-
break;
-
default:
#以上都不满足则执行这里
-
echo
"a=?";
-
break;
-
}
-
?>
循环结构
1. while
-
while(表达式){
-
语句;
-
}
-
<?php
-
$a =
5;
-
while($a<
10){
-
print(
'哈哈');
-
$a++;
-
echo
'<br/>';
-
}
-
#输出5个'哈哈'
-
?>
2. for
-
<?php
-
for($a=
5;$a<
10;$a++){
-
print(
'哈哈');
#当$a小于10的时候执行这里面的语句,然后$a再加1,接着再判断$a是否小于10
-
print(
'<br/>');
-
}
-
?>
3. do while
-
<?php
-
$a =
5;
-
do{
-
echo
'哈哈';
-
echo
'<br/>';
-
$a++;
-
}
while($a<
10);
#先执行do里面的语句,再来while里面判断
-
#输出5个"哈哈"
-
?>
while与do while的区别是:
- while先判断再执行
- do while先执行再判断
beak和continue区别(和python中的一样):
- break:直接跳出整个循环
- contine:只是跳出当次循环,然后返回开头继续接着下次循环
字符串
字符串可用单引号或者双引号包裹,但是在PHP中他们是有区别的
- 单引号中不能引用变量;引入转义字符,转义字符不会转义
- 双引号中引入变量,变量会被解析;引入转义字符,转义字符能够转义
.号作为拼接符,拼接两个变量(字符串)
-
<?php
-
$a =
"xzc";
-
echo
'this is \n $a <br/>';
#不会解析变量,也不会对转义字符进行转义,换行符可以
-
echo
"this is \n $a <br/>";
-
echo $a.
".df";
-
?>
字符串中常用方法
$a = "https://www.baidu.combaidu.com";
增
删
改
- str_replace("baidu","jd",$a) 将变量a中的"baidu"字符替换为成"jd",区分大小写
-
str_ireplace("Baidu","jd",$a) 将变量a中的"baidu"字符替换为成"jd",不区分大小写
- explode('.',$a) 以.号对变量就行分割开,然后返回一个数组
- implode($arr,'连接符') 把数组元素用连接符组合为一个字符串,连接符可以不要
- trim($a) 消除字符串的首尾空白字符,包括控制字符如换行回车等
- ltrim($a) 消除左边
- rtrim($a) 消除右边
查
- strlen(字符串) 获取字符串长度,英文占一个字符长度,中文占三个字符长度
- mb_strlen(字符串,[编码形式]) 获取字符串长度,此时中文就代表一个长度了
- strpos($a,'bai') 查找"bai"这个字符首次出现的位置,即索引值(区分大小写),索引从0开始
- stripos 和上一一样,区分大小写
-
strrpos($a,'u') 查找"u"这个字符从右边开始出现的第一个位置(区分大小写)
- strstr($a,"bai") 查找 "bai" 在变量a中是否存在,如果是,返回该字符串及后面剩余部分(区分大小写)
- stristr 和上一样,不区分大小写
- substr($a,6,4) 从第六位开始(0开始算),截取4个字符
-
strrchr($a,'d') 查找字符串d在变量a中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符。
addslashes()
addslashes() 函数能够在预定义的字符前添加反斜杠进行转义。在sql中用的比较多,防止sql注入
预定义字符是:
- 单引号(')
- 双引号(")
- 反斜杠(\)
- NULL
-
<?php
-
$a =
"who's you";
-
echo addslashes($a);
#输出who\'s you,自动对字符串中的单引号进行了转义
-
?>
htmlspecialchars()
htmlspecialchars() 函数把预定义的字符 "<" 、">" 、"&" 转换为 HTML 实体。这样可以防止xss攻击
-
<?php
-
$a =
"<script>alert(/1/)</script>";
-
#echo $a #输出这条肯定会弹窗的
-
echo htmlspecialchars($a);
#这里进行了转义处理,不会弹窗
-
?>
看下源码,<>被转换成了HTML实体,所以不能执行xss。
数组
数组能够在单个变量中存储多个值,并且您可以根据键访问其中的值。不能使用echo输出数组
在 PHP 中,array() 函数用于创建数组:
在 PHP 中,有三种类型的数组:
- 数值数组 - 带有数字 ID 键的数组,索引默认从0开始
- 关联数组 - 带有指定的键的数组,每个键关联一个值
- 多维数组 - 包含一个或多个数组的数组
1. 数值数组
-
<?php
-
$arr1 =
array(
'hello',
1,
2.1,
False);
-
print_r($arr1);
#print_r或者var_dump打印数组
-
echo
'<br/>';
-
var_dump($arr1)
-
?>
2. 关联数组
制定键的形式
-
<?php
-
$arr2 =
array(
-
'aa'=>
'nihao',
-
"bb"=>
"hello",
-
"cc"=>
"hai",
-
);
-
print_r($arr2)
-
?>
遍历数组
php中可以使用foreach函数对数组进行遍历,如下使用foreach分别打印$arr1和$arr2中的键和值
-
<?php
-
$arr1 =
array(
'hello',
1,
2.1,
'北京');
-
-
$arr2 =
array(
-
'aa'=>
'nihao',
-
"bb"=>
"hello",
-
"cc"=>
"hai",
-
);
-
foreach($arr1
as $key => $value){
-
echo $key.
'---'.$value.
'<br/>';
#echo输出默认不带换行
-
}
-
echo
'<hr/>';
-
foreach($arr2
as $key => $value){
-
echo $key.
'---'.$value.
'<br/>';
#echo输出默认不带换行
-
}
-
?>
数组的操作
$arr = array('a','vv','北京','上海');
增
- $arr[]="曹县" 数组最后边增加‘曹县’这个元素
删
- unset($arr[索引值]) 删除索引所在值
改
- $arr[1]=‘www.xcc.com’ 将索引1所在的值改为xxxx
查
- echo $arr1[0] 输出键0对应的值
- echo count($arr1) 输出数组长度
-
array_key_exists('aa',$arr2) 查看数组$arr2中是否存在'aa'这个键,返回布尔型
-
n_array('hello',$arr2) 查看数组$arr2中是否存在'hello'这个值,返回布尔型
-
array_keys($arr2) 输出数组$arr2中所有的键
函数
创建函数如下。函数的运行需要先调用
- 函数的名称应该提示出它的功能
- 函数名称以字母或下划线开头(不能以数字开头)
-
<?php
-
function 函数名()
-
{
-
// 要执行的代码
-
}
-
?>
不带参数的函数
-
<?php
-
function aa(){
-
echo
'https://www.baidu.com';
#分号结尾
-
}
-
aa()
//调用函数
-
?>
带参数的函数
如下函数携带了连个参数
-
<?php
-
function aa($name,$age){
-
echo
'my name is '.$name.
", i am $age ";
#分号结尾
-
}
-
aa(
'鲍勃',
'13')
//调用函数
-
?>
当需要函数的执行结果做另外的运算时,我们可以使用return将函数的结果进行返回
超全局变量
PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们。
这些超全局变量是:
- $GLOBALS
- $_SERVER
- $_REQUEST
- $_POST
- $_GET
- $_FILES
- $_ENV
- $_COOKIE
- $_SESSION
$GLOBALS 这种全局变量用于在 PHP 脚本中的任意位置访问全局变量(从函数或方法中均可)。PHP 在名为 $GLOBALS[index] 的数组中存储了所有全局变量。变量的名字就是数组的键。
-
<?php
-
var_dump($GLOBALS);
-
?>
输出结果如下
$_SERVER
输出一些服务端和客户端的信息
-
<?php
-
var_dump($_SERVER);
-
var_dump($_SERVER[
"SERVER_ADDR"]);
-
?>
$_GET
get传参,相比大家都熟悉
如果没有进行get传参,则输出no get。否则对a和b进行传参,再输出
-
<?php
-
function getAdd($a,$b){
-
return $a+$b;
-
}
-
if(
empty($_GET)){
-
echo
"no get";
-
}
else{
-
$x = $_GET[
"a"];
-
$y = $_GET[
"b"];
-
$c = getAdd($x,$y);
-
echo $c;
-
}
-
?>
常量
常量是一个简单值的标识符(名字)。如同其名称所暗示的,在脚本执行期间该值不能改变。常量默认为大小写敏感。传统上常量标识符总是大写的。
可以使用define来定义常量
-
<?php
-
define(
'xc',
3.1453);
-
echo xc;
//输出3.1453
-
?>
全局变量与局部变量
函数外定义的变量为全局变量,作用域在全局
函数内定义的变量为局部变量,默认作用于在函数内。函数内的变量可加global变成全局变量
转载:https://blog.csdn.net/qq_44159028/article/details/116895883