<?php $mumu=1111; $didi=2222; $didi=&$mumu; $mumu=8888; echo $didi ; ?> 输出为8888,可以这样理解:木木电脑才在1111,弟弟的电脑存在2222,然后弟弟和木木共享文件夹(变成相同的值),木木值改变,输出的弟弟值也变。
变量以 $ 符号开始,后面跟着变量的名称
变量名必须以字母或者下划线字符开始
变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )
变量名不能包含空格
变量名是区分大小写的($y 和 $Y 是两个不同的变量)
var_dump($a);输出变量a的字符类型,常用于测试。
一、变量
<?php // echo "您剁手太严重,淘宝已经屏蔽您的访问"; // 注释 单行和多行 /* 多行注释 ,可以注释多行代码 这一行也可以 */ // 变量 // 定义变量 必须用 $符开头 // 变量名:只能包含:字母、数字、下划线(_) 数组不能开头 变量名区分大小写 $name="张三"; $age=10; $height=182.24; $num=100; $num1=101; // 变量计算 $num2=$num+$num1; echo $num2; // 复制赋值 $new_name=$name; echo "<br>"; echo $new_name; $name="新张三"; echo "<br>"; echo $new_name; echo "<br>"; echo $name; echo "<br>"; // 引用赋值 $new_name2=&$name; echo "new_name2:".$new_name2; echo "<br>"; $name="改成李四了111111"; echo "new_name2:".$new_name2; echo "<br>"; $new_name2="啊啊啊啊啊啊"; echo "name:".$name; // 可变变量 echo "<br>"; $name="abc"; $abc="def"; $def="123456789"; // $test=$abc $test=$$$name; echo $test; echo "<br>"; // var_dump 可输出更多类型的数据,可获得更多的信息 $bool=false; echo $bool; echo "<br>"; var_dump($bool); echo "<br>"; // isset 变量存在返回true 不存在返回false $names="123"; var_dump(isset($names)); var_dump(isset($names1)); $is_exists=isset($names); var_dump($is_exists); if($is_exists==true){ echo "变量存在"; }else{ echo "变量不存在"; } // unset 删除变量 unset($names); var_dump(isset($names)); // var_dump($names) echo "<pre>"; // 系统内置全局变量 var_dump($_SERVER); var_dump($_COOKIE); var_dump($_SESSION); var_dump($_GET); var_dump($_POST); var_dump($_REQUEST); //常量 // 一旦定义不可修改,只能定义一次;常量名和变量名使用一样的约束 //常量定义 使用define 关键词定义 define('name','王五'); // 常量使用时不需要使用$符 // 输出常量 echo name; // 输出变量 echo $name; // 常量名在定义时,约定俗成使用全大写,跟变量名进行有效的区分 define('NAME',"赵六"); echo NAME; // 常量 一经定义不可修改; // define('NAME','小红'); // 报错 // 检查常量是否存在 使用 defind 返回布尔值(true或者false) var_dump(defined("NAME")); var_dump(defined("NAME1")); // PHP 数据类型 // 三大类 标量类型 复合类型 特殊类型 // 标量类型(基础类型) 包含 数字(int) 浮点(float) 字符串(string) 布尔(bool:boolean) $num=100; var_dump($num); $float_val=100.24; var_dump($float_val); // 字符串 单引号解析速度比双引号快; $str="字符串$num"; $str1='字符串$num'; var_dump($str); var_dump($str1); // 复合类型 数组(array)、对象(object) $arr=[1,3,4,5,6]; var_dump($arr); $arr2=array(1,3,4,5,6); var_dump($arr2); $arr3[1]=100; var_dump($arr3); // 对象() class People{ public $name="123"; } $peo=new People(); var_dump($peo); // 特殊类型 NULL 资源(resource); $test=NULL; var_dump($test); $fd=fopen('./abc.txt','r'); var_dump($fd); ?>
二、类型转换与运算符
<?php // 标量数据类型(基础类型)类型转换 // 隐式类型转换(自动类型转换) $num=100; $float_val=20.01; // int类型先转换成 浮点类型 var_dump($num+$float_val); // 浮点 int bool // bool 向int转换 true 转成1 false 转成 0 $bool=true; $num2=10; var_dump($bool+$num2); $bool2=false; var_dump($bool2+$num2); // 字符串向 int 类型转换 // $str="101aaaaaa"; // 转成 101 // $str="aaaa100"; // 转成成0 $str="100.01aaaa"; // 转成 100.01 $num3=10; var_dump($str+$num3); $bool3=true; // 转成1 $str2="10abc"; // 转成 10 var_dump($bool3+$str2); echo "<br>"; // 强制类型转换(显示类型转换) $str="101abc"; var_dump(intval($str)); var_dump(floatval($str)); // 字符串转bool非空转为true 空转false // 数字和浮点转bool 0转false 非0转成 true var_dump(boolval($str)); $num4=100; var_dump(boolval($num4)); echo "<br>"; // 数据类型检查 $bool4=true; $str3="abcdef"; var_dump(is_bool($bool4)); var_dump(is_bool($str3)); // is_string is_int is_float is_array is_object is_bool echo "<br><hr>运算符<br>"; // 运算符 算数运算符 字符串运算符 比较运算符 逻辑运算符 赋值运算符 // 算数运算符 + - * / % ++ -- $num5=100; $num6=50; var_dump($num5+$num6); var_dump($num5-$num6); var_dump($num5*$num6); var_dump($num5/$num6); var_dump($num5%3); // 求余 取模 var_dump($num5+$num6*2); // 先乘除后加减 var_dump(($num5+$num6)*2); // 使用()调整优先级 $num5++; var_dump($num5); $num5--; var_dump($num5); echo "<br><hr>字符串运算符<br>"; // 字符串运算符 使用 "." 拼接字符串 $name="小明"; $age=23; echo "用户名:".$name." 年龄:".$age; echo $name.$age; echo "<br><hr>赋值运算符<br>"; // 赋值运算符 $name="张三"; var_dump($name); // += -= *= /= %= $num=100; $num+=100; // 可以看成 $num=$num+100; var_dump($num); $num-=50; // $num=$num-50 var_dump($num); $num*=2; // $num=$num*2; var_dump($num); $num/=3; // $num=$num/3 var_dump($num); $num%=3; // $num=$num%3; var_dump($num); $str="张三"; $str.=" 年龄 23"; // $str=$str." 年龄 23"; var_dump($str); echo "<br><hr>比较运算符<br>"; // 比较运算符 > < == >= <= != === $num=100; $num1=200; var_dump($num > $num1); // 返回 false var_dump($num < $num1); var_dump($num >= 100); var_dump($num <=100); var_dump($num == $num1 ); var_dump($num == 100); $str="100aaa"; // 100 var_dump($num == $str); // 返回 true // 全等于 var_dump($num===$str); // 返回false 会比较数据类型 echo "<br><hr>三元运算符<br>"; // 三目运算(三元运算符) 语法结构: 表达式 ? 成立后时执行 : 不成立时执行 var_dump(100 > 2 ? "成立" : "不成立" ); var_dump(100 < 2 ? "成立" : "不成立" ); var_dump($num < $num1 ? "成立" : "不成立"); echo "<br><hr>逻辑运算符<br>"; // 逻辑运算符 与或非 and or ! 链接多个表达式 // and 两端的表达式都成立 整个表达式才成立 var_dump( 1>2 and 3>1 ); // 不成立 返回 false var_dump( 2>1 and 3>2 ); // 成立 返回true // or 两端的表达式 任意一个表达式成立 整个表达式成立 var_dump( 1>2 or 3>1 ); // 成立 返回 true var_dump( 2>1 or 3>2 ); // 成立 返回true var_dump( 2<1 or 3<2 ); // 不成立 返回false // 非 ! 取反 var_dump(!(1>2)); var_dump(!(2>1)); ?>
三、流程控制
<?php /*****流程控制************/ // 顺序结构 echo "1"; echo "2"; echo "3"; // 分支结构 if ( 1 < 2 ) { # code... echo "表达式成立"; } echo "<br>"; if ( 2 < 1 ) { # code... echo " 2 < 1 条件成立"; echo "条件不成立 不执行"; } echo "<br>"; // 双路分支 if ( 2>3 ) { // 表达式成立 执行的代码块 echo "条件成立"; } else { // 条件不成立时 执行的代码块 echo "条件不成立"; } echo "<br>"; $age=17; if($age>=18){ echo "随便玩儿"; }else{ echo "未成年,游戏时间不得大于2个小时"; } echo "<br>"; // 多路分支 $age=35; if ($age<18) { // 小于10 echo "未成年,游戏时间不得大于2个小时"; }elseif($age <=30){ // 大于等于18 小于等于 30 echo "随便玩"; }elseif($age <=50){ // 大于30 小于等于50 echo "要不要氪点金!"; }else{ // 大于50 echo "老爷子注意身体,早点休息!"; } echo "分支结束!"; // 循环结构 // for while do while foreach //$i=0 初始条件 只会执行一次 //$i<10 循环的条件,条件成立时循环才会执行;每次循环都会执行 // $i++ 自增 除第一次之外每次都执行 for ($i=0; $i < 10; $i++) { // 循环体 每次循环要执行的代码 echo $i."<br>"; # code... } // 循环嵌套 // 循环结构 外层循环执行一次 内层循环执行一圈 // 当前循环会执行100次 循环最好不好超过两层 for ($i=1; $i < 10; $i++) { for ($j=1; $j <10 ; $j++) { if($j<=$i){ echo $i."*".$j."=".$i*$j." "; } } echo "<br>"; } $num=1; // 先判断条件 条件成立 执行循环体 while ($num <= 10) { // break // continue // if($num==5){ // // 整个循环结束 break 后的代码不在执行 // break; // } $num++; if($num==5){ // 跳出本次循环 continue 后的代码不在执行 continue; } echo $num; } // 先执行一遍循环体,在判断条件 // do while 不管条件是否成立,循环体至少执行一次; $num=1; do { # code... echo "do while的循环体"; echo $num; } while ($num > 10); echo "<br>"; $arr=['a','b','c','d','e','f']; foreach ($arr as $k => $v) { # code... // echo "元素的key:".$key."元素的value:".$value."<br>"; echo "元素的key:".$k."元素的value:".$v."<br>"; } ?>
四、函数
<?php //声明函数 // 语法格式: function 函数名(参数.....){函数体 return 返回值} // 参数和返回值可选。 // 函数在声明的时候不会被执行,在调用的位置执行 function func(){ echo "我是func函数<br>"; } echo "函数体外"; //调用函数 : 函数名() //什么位置调用,在什么位置执行。 echo "调用函数前<br>"; func(); echo "调用函数后<br>"; echo "<br><hr>"; //形参:函数声明时的参数时形参 //实参:函数在调用时传递的参数是实参 //函数调用传入的参数是按顺序传递,传值的方式是复制传至 //函数在声明是定义了几个参数,在调用时就需要传入几个参数; function func1($num,$num2){ echo $num+$num2; } $num=100; func1($num,200); echo "<br><hr>返回值"; // 返回值 function func2($num,$num1){ // 使用return 关键词返回相应的内容 // if(false){ return $num+$num1; // } //函数体内,执行return之后函数会立刻返回,之后的代码不会在执行 echo "return 之后的代码"; return 500; } //如果函数有返回值,需要使用变量接收。 $result=func2(100,200); var_dump($result); echo "<br><hr>参数默认值<br>"; // 默认参数 有默认值的参数,在调用时参数可以不传。 // 有默认值的参数放到参数列表的后边。 function func3($num,$num2=100){ return $num+$num2; } $num=110; $result=func3($num); var_dump($result); $result=func3($num,500); var_dump($result); // 变量的作用域 // 全局变量和局部变量 // 全局变量:在函数体外声明的变量都是全局变量; // 全局变量的作用域:在函数体外的任意部分 // 局部变量:在函数体内声明的变量是局部变量 // 局部变量的作用域:在当前函数的函数体内。 $name="张三"; //全局变量 function func4(){ $realname="李四"; // 局部变量 var_dump('函数内realname值:'.$realname); // var_dump($name); } function func5(){ $num=100; // 局部变量 // var_dump($name); // var_dump($realname); var_dump('num:'.$num); } function func6(){ // 使用global关键词在函数体内引入全局变量 global $name; var_dump('func6的name:'.$name); // 可以修改 $name="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; // 慎用global 频繁使用global容易造成变量污染。 } func4(); func5(); func6(); var_dump('函数外:name'.$name); // var_dump($realname) // 静态变量 // 使用static 修饰的静态变量 // 静态变量 只会被定义一次 function func7(){ static $num=1; $num++; echo "<br>"; var_dump($num); } func7(); func7(); func7(); func7(); func7(); // echo "<br><hr>变量函数<br>"; $func_name="func7"; // 变量函数:使用变量当函数名 $func_name(); // func7(); ?> =================================================================================================== 变量字符串用双引号引起来代表完全转义,单引号代表输出变量原本样子。 例如:<?php $i="acvb"; $mumu='abcdwr<p>$i</p>'; $didi="bcdwr<p>$i</p>"; echo $mumu; echo $didi; ?> 输出的结果为 abcdwr $i bcdwr acvb php函数教程地址:http://www.w3school.com.cn/php/php_ref_string.asp --------------------------------------------------------------------------------------------------------------------------------- 常用函数:md5(). 数据类型:1.字符串2.整型3.浮点型4.逻辑5.数组6.对象7.null 几个循环:上段第三个。 字符拼接:$a=123;echo $a.'456'; //输出123456
4.1函数定义
其实说白了 函数就是一个半自动化机器人 就是一个存储代码的一个盒子。 你想使用他的时候就按一下开关。 <?php function dong($b){ $a=$b;echo $a.'456<br>'; } dong(852); //把b赋值为852 dong(864444444); ?> 输出为852456 864444444456。函数体内的变量可以进行任意的替换。
4.2函数传参
function demo($name,$edu=‘tianjin’){ //函数体内叫形参 echo 'hello'.$name.$edu; } demo('mumu','handan'); //传递实参进入函数体,如果形参已经定义,就把实参替换成形参。 输出为hellomumuhandan。 static 静态,这种值放在内存中每改变一次就会永久改变。 变量分为局部变量与外部变量,函数体内的变量不能在外部被执行。 global为全局变量。 <?php $name='dong'; function demo(){//函数体内叫形参 global $name; $name=124; } demo(); echo $name; ?> 输出为124。删除demo();输出就为dong。$GLOBALS['a1']
4.3return
<?php function demo(){//函数体内叫形参 return 124; } $a=demo(); echo $a; ?> 输出值为124,因为返回值付给了变量a。 自己理解,return就是在函数体内返回一个值,然后在函数体外把这个值赋给变量。 <?php function &demo(){ static $i=0; $i++; return $i; } $a=&demo(); //1 $a=100; $a=demo(); echo $a; //101 ?>输出结果为101,取址符&在函数前代表把返回值做成一个整体,与变量绑在一起后,变量变化就会带着return值变化。
五、数组
<?php $arr=array('dong','18','网络安全专家');//数组 $arr1[]='x'; echo $arr[2]; echo $arr1[0]; ?>输出为网络安全专家x。 var_dump($arr);//array(3) { [0]=> string(4) "dong" [1]=> string(2) "18" [2]=> string(18) "网络安全专家" }
5.1数组分类
<?php $arr=array('dong','18','网络安全专家');//数组 for ($i = 0; $i < count($arr); $i++) { echo($arr[$i]).'<hr />'; // code... } ?>输出为 dong -------------------------------------------------------------------------------- 18 -------------------------------------------------------------------------------- 网络安全专家 此代码用于遍历数组。
5.2关联数组的遍历
<?php $arr=array('name'=>'dong','age'=>'18','profession'=>'网络安全专家');//数组 foreach ($arr as $key => $value){ echo '键名'.$key.'值'.$value.'<br />'; } ?> 此代码输出为: 键名name值dong 键名age值18 键名profession值网络安全专家
5.3二维数组(数组里面套数组)
<?php $arr=array('name'=>'dong','age'=>'18','profession'=>array('网络安全','网络工程'));//数组 foreach ($arr as $key => $value){ if (is_array($value) ){ foreach ($value as $k1 => $v1) { echo '二维数组'; } }else { echo '键名'.$key.'值'.$value.'<br />'; } } ?> 输出为 键名name值dong 键名age值18 二维数组二维数组
六、时间戳
<?php $arr=time();//时间戳 echo $arr.'<hr />'; echo date('Y-m-d H:i:s', $arr);//时间戳转成时间 ?> 输出为 1591749201 -------------------------------------------------------------------------------- 2020-06-10 08:33:21
七、GET与POST请求
一般我们在浏览器输入一个网址访问网站都是GET请求;再FORM表单中,可以通过设置Method指定提交方式为GET或者POST提交方式,默认为GET提交方式。 <?php var_dump($_GET); ?>//获取get值,在自己的浏览器配一个值就能输出,http://39.100.117.158/wan.php?name=dong。输出为array(1) { ["name"]=> string(4) "dong" }。 <?php $l=$_GET['mumu']; $m=fopen("./22.txt","w"); fwrite($m,$l); ?>把获取的参数值写进22.txt,在浏览器输入http://39.100.117.158/wan.php?mumu=dong就会把dong写入文件。
八、三元运算符
$a=1?"2343":"300";//a=1,对的话输出2343,错的话输出300。 <?php //empty//没值为真,有值为假 //isset//有值为真,没值为假 $a=isset($_GET['name'])?'1000':$_GET['name'];//判断是否存在,对的话输出1000,错的话输出get获取的值。 echo $a; ?> http://39.100.117.158/wan.php?name=dong输出为dong,http://39.100.117.158/wan.php为空。 //empty http://39.100.117.158/wan.php?name=dong输出为dong ,http://39.100.117.158/wan.php为1000。 数字加引号变成字符型,不加就是整形int。