目录
一. 简介
二. php语法
基础语法
字符串
数组
函数
超全局变量
常量
全局变量与局部变量
PHP(全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器")是一种通用开源脚本语言。PHP 文件可包含文本、HTML、JavaScript代码和 PHP 代码。其在服务端执行,结果以纯 HTML 形式返回给浏览器。
因为PHP是运行在服务端的语言,所以我们先要搭建一个web服务,然后在网站下面写php文件。
php的语句都写在 中。语句必须以分号;结尾
注释符
变量
变量类型
- 整型: -1 2 3 4 integer
- 浮点数: 就是小数 1.1 2.1 double
- 字符串: "www.baidu.com" string
- 布尔: boolean ,即true和false
- 数组: array(...)
- NULL: 空类型
isset和var_dump
gettype 输出变量的类型
运算符
和其他语言也差不多
#数学运算符
echo "
" 进行换行,echo默认不换行
+ - * / 加减乘除
% 取余
++ --
#比较运算符(返回boolean类型)
> >= < <= != == 其他语言通用
=== 恒等于,值和数据类型都相同
!==
变量++ 先运算,再加1
++变量 先加1,再运算
$a++
";
echo $a; #输出2
?>
++$a
";
echo $a; #输出2
?>
注意:python中没有++或者--这个运算符,只有 a+=1 这种
===和==
";
var_dump($a===$b); #输出bool(false)
?>
三元运算符
运算式?值1:值2 #如果运算式为真,则输出值1,否则输出值2
$b?"yes":"no"
?>
>>输出 no
逻辑运算符
";
$a = false;
$b = false;
var_dump($a && $b); #输出bool(false)
echo "
";
$a = true;
$b = false;
var_dump($a || $b); #输出bool(true)
echo "
";
$a = true;
var_dump(!$a); #输出bool(false)
?>
字符串运算符
php的字符串运算符是一个.号,就是将字符串就行拼接,像python中进行字符串拼接直接用+就可以了。
选择结构
1. if语句
5){
echo '哈哈';
}else if($a>4){
echo '呵呵';
}else{
echo '嘿嘿';
}
echo "
";
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 时执行的代码;
}
1){ #这里$a可以为变量,也可以为表达式(此时下面的 case后面也要跟着同样的表达式)
case $a>1:
echo "a=1";
echo "
";
break;
case 2:
echo "a=2";
echo "
";
break;
case 3:
echo "a=3";
echo "
";
break;
default: #以上都不满足则执行这里
echo "a=?";
break;
}
?>
循环结构
1. while
while(表达式){
语句;
}
';
}
#输出5个'哈哈'
?>
2. for
');
}
?>
3. do while
';
$a++;
}while($a<10); #先执行do里面的语句,再来while里面判断
#输出5个"哈哈"
?>
while与do while的区别是:
beak和continue区别(和python中的一样):
字符串可用单引号或者双引号包裹,但是在PHP中他们是有区别的
.号作为拼接符,拼接两个变量(字符串)
'; #不会解析变量,也不会对转义字符进行转义,换行符可以
echo "this is \n $a
";
echo $a.".df";
?>
字符串中常用方法
$a = "https://www.baidu.combaidu.com";
增
删
改
str_ireplace("Baidu","jd",$a) 将变量a中的"baidu"字符替换为成"jd",不区分大小写
查
strrpos($a,'u') 查找"u"这个字符从右边开始出现的第一个位置(区分大小写)
strrchr($a,'d') 查找字符串d在变量a中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符。
addslashes()
addslashes() 函数能够在预定义的字符前添加反斜杠进行转义。在sql中用的比较多,防止sql注入
预定义字符是:
htmlspecialchars()
htmlspecialchars() 函数把预定义的字符 "<" 、">" 、"&" 转换为 HTML 实体。这样可以防止xss攻击
alert(/1/)";
#echo $a #输出这条肯定会弹窗的
echo htmlspecialchars($a); #这里进行了转义处理,不会弹窗
?>
看下源码,<>被转换成了HTML实体,所以不能执行xss。
数组能够在单个变量中存储多个值,并且您可以根据键访问其中的值。不能使用echo输出数组
在 PHP 中,array() 函数用于创建数组:
在 PHP 中,有三种类型的数组:
1. 数值数组
';
var_dump($arr1)
?>
2. 关联数组
制定键的形式
'nihao',
"bb"=>"hello",
"cc"=>"hai",
);
print_r($arr2)
?>
遍历数组
php中可以使用foreach函数对数组进行遍历,如下使用foreach分别打印$arr1和$arr2中的键和值
'nihao',
"bb"=>"hello",
"cc"=>"hai",
);
foreach($arr1 as $key => $value){
echo $key.'---'.$value.'
'; #echo输出默认不带换行
}
echo '
';
foreach($arr2 as $key => $value){
echo $key.'---'.$value.'
'; #echo输出默认不带换行
}
?>
数组的操作
$arr = array('a','vv','北京','上海');
增
删
改
查
array_key_exists('aa',$arr2) 查看数组$arr2中是否存在'aa'这个键,返回布尔型
n_array('hello',$arr2) 查看数组$arr2中是否存在'hello'这个值,返回布尔型
array_keys($arr2) 输出数组$arr2中所有的键
创建函数如下。函数的运行需要先调用
不带参数的函数
带参数的函数
如下函数携带了连个参数
当需要函数的执行结果做另外的运算时,我们可以使用return将函数的结果进行返回
PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们。
这些超全局变量是:
$GLOBALS 这种全局变量用于在 PHP 脚本中的任意位置访问全局变量(从函数或方法中均可)。PHP 在名为 $GLOBALS[index] 的数组中存储了所有全局变量。变量的名字就是数组的键。
输出结果如下
$_SERVER
输出一些服务端和客户端的信息
$_GET
get传参,相比大家都熟悉
如果没有进行get传参,则输出no get。否则对a和b进行传参,再输出
常量是一个简单值的标识符(名字)。如同其名称所暗示的,在脚本执行期间该值不能改变。常量默认为大小写敏感。传统上常量标识符总是大写的。
可以使用define来定义常量
函数外定义的变量为全局变量,作用域在全局
函数内定义的变量为局部变量,默认作用于在函数内。函数内的变量可加global变成全局变量