目录
一、流程控制
1、IF语句
<?php
#IF语句第一种形式 if
if(True){
echo 'hello world<br />';
echo 'php is if';
}
#IF语句第二种形式 if-else
if(True){
echo 'True';
}else {
echo 'False';
}
#IF语句第三种形式 if-elseif-else
$int1 = 5;
if($int1 === 1){
echo '1';
}elseif($int1 ===2){
echo '2';
}elseif($int1 ===3){
echo '3';
}else{
echo 'hello';
}
#获取星期几例子 输出 2018年09月01日 14:58:52星期六
header('content-type:text/html;charset=utf8'); #有中文,设置编码
echo @date('Y年m月d日 H:i:s'); #加上错误抑制符@,就不会显示日期警告
$a = @date('w');
if($a === '1'){
echo '星期一';
}elseif($a === '2'){
echo '星期二';
}elseif($a === '3'){
echo '星期三';
}elseif($a === '4'){
echo '星期四';
}elseif($a === '5'){
echo '星期五';
}elseif($a === '6'){
echo '星期六';
}elseif($a === '0'){
echo '星期日';
}else{
echo '错误';
}
?>
2、预定义变量
- _POST:接收表单以POST方式发送的数据
- _GET:接收以?形式传参的数据
- _FIFES:文件上传变量
- _SERVER:服务器和执行环境变量
- _ENV:环境变量
- _SESSION:会话变量
- COOKIE:HTTP Cookie
- REQUEST:$_GET+$_POST+$_COOKIE
- GLOBALS:超全局变量,在全部作用域中始终可用的内置变量
- $php_errormsg:前一个错误信息
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>POST、GET和REQUEST例子</title>
</head>
<body>
<form action="" method="post">
姓名:<input type="text" name="name" id="">
<input type="submit" name="submit" value="提交">
</form>
<a href="http://127.0.0.1/bj/index.php?name=php">GET提交</a>
<?php
if(isset($_POST['submit'])){ #使用isset()函数,检测变量是否被设置值
$name=$_POST['name'];
echo '欢迎'.$name;
}
if(isset($_GET['name'])){
echo '欢迎'.$_GET['name'];
}
echo $_REQUEST['name'];
?>
</body>
</html>
3、Switch语句
<?php
/*
switch(exp){
case 值1:
代码段;
break;
case 值2:
代码段;
break;
default:
代码段;
break;
}
*/
header('content-type:text/html;charset=utf-8');
$date=@date('w');
switch($date){
case '1':
echo '星期一';
break;
case '2':
echo '星期二';
break;
case '3':
echo '星期三';
break;
case '4':
echo '星期四';
break;
case '5':
echo '星期五';
break;
case '6':
echo '星期六';
break;
default:
echo '星期日';
break;
}
?>
4、For循环
<?php
for($i=1;$i<10;$i++){
echo '<br />';
for($j=1;$j<=$i;$j++){
echo $j.'*'.$i.'='.$i*$j." ";
}
}
#continue:跳过本次循环,继续下次循环
#break:跳出循环
?>
5、While循环
<?php
$i=1;
while($i<10){
$j=1;
echo '<br />';
while($j<=$i){
echo $j.'*'.$i.'='.$i*$j.' ';
$j++;
}
$i++;
}
#do-while循环,无条件执行一次循环体代码
do{
echo 'aaaa';
}while(False)
?>
二、数组
创建数组
<?php
#一、通过array()函数声明数组
$array1=array(); //声明一个空数组
var_dump($array1); //array(0) { }
echo gettype($array1); //array
var_dump(is_array($array1)); //bool(true)
$array2=array(1,2.3,'hello','name'=>'php'); //定义混合数组
var_dump($array2); //数组下标从0开始,数组分为索引数组和关联数组
/*
array(4) {
[0]=>
int(1)
[1]=>
float(2.3)
[2]=>
string(5) "hello"
["name"]=>
string(3) "php"
}
*/
#二、动态创建数组 连续索引数组
$array1[]=1;
$array1[]=3.14;
$array1[]='aaa';
var_dump($array1);
#手动指定数组下标
$array2[0]=1;
$array2[1]=3.14;
$array2[2]='aaa';
var_dump($array1);
#动态创建关联数组
$arr1['name']='xiaoming';
$arr1['age']=20;
$arr1['sex']='男';
$arr1[]=2;
var_dump($arr1);
#三、快速创建索引数组
$arr=range(1,10);
var_dump($arr); //array(10) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) [4]=> int(5) [5]=> int(6) [6]=> int(7) [7]=> int(8) [8]=> int(9) [9]=> int(10) }
$arr1=range(1,10,2); //指定步长
var_dump($arr1); //array(5) { [0]=> int(1) [1]=> int(3) [2]=> int(5) [3]=> int(7) [4]=> int(9) }
#通过compact()函数快速创建关联数组
$name='xiaoming';
$age=20;
$addr='CQ';
$arr1=compact('name','age','addr');
print_r($arr1); //Array ( [name] => xiaoming [age] => 20 [addr] => CQ )
?>
使用数组
<?php
#对数组进行增删改查
$arr['name']='php';
$arr['age']=20;
$arr['addr']='CQ'; //增:
echo $arr['name']; //查: 通过指定键名获取键值 php
$arr['name']='PHP'; //改: 对数组内元素进行修改,只需要覆盖以前的键值即可
echo $arr['name']; //PHP
unset($arr['name']); //删:使用unset()函数删除数组元素
print_r($arr);
unset($arr); //删除整个数组
?>
多维数组
<?php
#使用array()函数创建多维数组
$arr=array(
array(1,2,3),
array(4,5,6)
);
print_r($arr); //Array ( [0] => Array ( [0] => 1 [1] => 2 [2] => 3 ) [1] => Array ( [0] => 4 [1] => 5 [2] => 6 ) )
#使用动态创建多维数组
$arr1[0]['dd']='php'; //创建一个二维数组
$arr1[0]['name']='hello';
print_r($arr1);
/*
Array
(
[0] => Array
(
[dd] => php
[name] => hello
)
)
*/
echo $arr1[0]['name']; //取值
?>
遍历数组
<?php
#格式为:foreach($array as key=>value)
$arr1[]='aaa';
$arr1[]='bbb';
$arr1[]='ccc';
$arr1[]='ddd';
foreach($arr1 as $key){ //只取key键名
echo $key.'<br />';
}
/*
aaa
bbb
ccc
ddd
*/
$arr2['name']='PHP';
$arr2['age']=20;
$arr2['addr']='CQ';
foreach($arr2 as $key=>$value){ //取key和value
echo $key.'=>'.$value.'<br />';
}
/*
name=>PHP
age=>20
addr=>CQ
*/
#生成二维数组
$arr1[]=array('name'=>'php','age'=>20,'addr'=>'CQ');
$arr1[]=array('name'=>'C++','age'=>18,'addr'=>'SH');
$arr1[]=array('name'=>'JAVA','age'=>29,'addr'=>'CD');
print_r($arr1);
/*
Array
(
[0] => Array
(
[name] => php
[age] => 20
[addr] => CQ
)
[1] => Array
(
[name] => C++
[age] => 18
[addr] => SH
)
[2] => Array
(
[name] => JAVA
[age] => 29
[addr] => CD
)
)
*/
foreach($arr1 as $key=>$value){ //遍历二维数组
echo $value['name'].'<br />';
echo $value['age'].'<hr />';
};
?>
数组运算符
+:合并数组,如果都有相同的键则取左边的
==:具有相同的键值则为True
===:具有相同的键值且类似和顺序都相同则为True
!=:具有不相同的键值则为True
!==:具有不相同的键值且类似和顺序都相同则为True
<?php
$arr1=array(1,2,3,4);
$arr2=array('aa','bb');
$arr3=$arr1+$arr2;
print_r($arr3); //Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 )
?>
三、系统函数
字符串函数
长度:strlen($String) 得到字符串长度
echo strlen('hello你好'); //11 在UTF-8中,一个中文占3个长度
字符串查找:strpos($string,$serch[,$offset]) 在指定字符串中查找目标字符串第一次出现的位置
echo strpos('hello','l'); //2
字符串查找:stripos($string,$serch[,$offset]) 忽略大小写的去查找
echo stripos('heLlo','l'); //2
字符串替换:str_replace($search,$replace,$string) 替换字符串 str_ireplace():忽略大小写进行替换
echo str_replace('a','1','aaabbbccc'); //111bbbccc
字符串大小写转换:strtolower() 到小写、strtoupper() 到大写
echo strtolower('ABC'); //abc
echo strtoupper('abc'); //ABC
字符串截取:substr($string,$start[,$length]) 截取指定长度字符串
echo substr('abcdefg',3); //defg
echo substr('abcdefg',3,2); //de
字符ASCII:ord() chr()
echo ord('a'); //97
echo chr(98); //b
加密:md5()、sha1()
echo md5('admin'); //21232f297a57a5a743894a0e4a801fc3
echo sha1('admin'); //d033e22ae348aeb5660fc2140aec35850c4da997
字符串过滤:
1、trim() 删首尾空
echo trim(' a bc '); //a bc
2、strip_tags() 过滤字符串中HTML标记
echo strip_tags("<html><h1>hello</h1></html>"); //hello
3、addslashes() 使用反斜线引用字符串中特殊字符
echo addslashes("a'"); //a\'
4、htmlentities()
echo htmlentities('<script>alert(/"xs"/)</script>'); //<script>alert(/"xs"/)</script>gt;
5、nl2br() 将字符串中的\n用<br/>代替
echo nl2br("hello\nworld"); //hello<br />world
字符串比较:strcmp() 比较两个字符串大小
echo strcmp('aaa','bbb'); //-1
分割文本:expload($delimiter,$string) 将指定字符串拆分为数组
print_r(explode('#','aaa#bbb#ccc')); //Array ( [0] => aaa [1] => bbb [2] => ccc )
合并文本:join($delimiter,$array) 将数组连接成字符串
$arr1=array('aaa','bbb','ccc');
echo join('-',$arr1); //aaa-bbb-ccc
反转字符:strrev()
echo strrev('abc'); //cba
数学函数
求绝对值:abs($number)
四舍五入:round($number,$percision)
幂运算:pow($base,$exp)
平方根:sqrt($number)
求最大值:max($va1,$va2......)
求最小值:min($va1,$va2......)
产生随机数:mt_rand($min,$max)
日期时间函数
得到当前时间戳:time()
echo time();//1535887462
得到当前服务器时间:date($format[,$time])
echo date('Y-m-d'); //2018-09-02
四、自定义函数
定义函数
<?php
#函数的定义
function fun1($int1,$int2){
return $int1+$int2;
}
echo fun1(3,5); //函数的调用
?
函数的参数
<?php
#函数的参数分为2种:形参和实参
#形参有2种:必选参数和可选参数
function fun1($str1,$str2='php'){
return $str1.' '.$str2;
}
echo fun1('hello'); //hello php
echo fun1('hello','world'); //hello world
?>
变量的作用域
<?php
#变量的作用域分为:局部变量和全局变量
#局部变量又分为:动态变量和静态变量
function test(){
$i=1; //局部动态变量,函数执行完就释放
$i++;
echo $i.'<br/>';
static $a=1; //局部静态变量,函数执行完保存在静态内存中
$a++;
echo $a.'<br/>';
}
test(); //2 2
test(); //2 3
test(); //2 4
$str1='php';
function test1(){
global $str1; //函数内不能直接调用全局变量,如果要使用,进行global关键字实现
echo $str1; //php
}
test1();
?>
传值和传引用
<?php
#传值在函数体内对变量更改不影响变量本身
#传引用在函数体内对变量更改影响变量本身
$str1='php';
function test($str){
$str='hello';
echo $str; //hello
}
test($str1);
echo $str1; //php 直接传值,不会影响原变量
function test1(&$str){
$str='hello';
echo $str; //hello
}
test1($str1);
echo $str1; //hello 传引用,会影响变量本身
?>
变量函数
<?php
#将函数名称赋值给变量,调用的时候通过变量名称加上小括号的形式进行调用
$md51='md5';
echo $md51('admin'); //21232f297a57a5a743894a0e4a801fc3
function test(){
echo 'hello php';
}
$test1='test';
$test1(); //hello php
?>
回调函数
<?php
#自定义回调函数
function test($str){
echo 'hello '.$str;
}
function callback($call,$str1){
$call($str1);
}
callback('test','php'); //hello php 把函数当作参数传递
#使用call_user_func()进行调用
call_user_func('test','php'); //hello php
?>
递归函数
<?php
#函数自己调用本身
function test($i){
echo $i.'<br />';
$i++;
if($i<=10){ //递归函数一定要有结束条件
test($i);
}
}
test(1); //输出1 2 3 4 5 6 7 8 9 10 和循环类似
?>
匿名函数
<?php
#匿名函数也叫闭包函数,允许临时创建一个不指定名称的函数
$test=function($str1){
echo 'hello '.$str1;
};
$test('php'); //匿名函数使用变量函数来进行调用 hello php
?>
可变参数
<?php
#func_num_args() 得到函数参数个数
#func_get_arg() 得到函数参数
#func_get_args() 得到函数参数数组形式
function test(){
echo func_num_args(); //5
echo func_get_arg(1); //2 参数下标和数组一样,从0开始
$arr1=func_get_args(); //Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
foreach($arr1 as $key){
echo $key; //12345 得到每个参数值
}
};
test(1,2,3,4,'5');
?>