IP 127.0.0.1 在windows等系统的正确解释是:本机地址(本机服务器)
B站视频地址:PHP快速从入门到半吊子
# 双引号可以解析单引号的值 $a='45'; $b="11$a"; echo $b; # 输出 1145 # 变量连接(因为php是弱类型语言) echo $a.$b # 输出 451145
# 通过 $_GET 或 $_POST 超全局变量来接收参数 # 输出变量有 print_r() | var_dump() | print() | var_export() // 可代理操作的软件有 postman 或 BurpSuite // http://127.0.0.1/index.php?a=hello&b=world # $_GET 用于接收参数 echo $_GET['a'],$_GET['b']; # $_POST 至今搞不懂 # print_r() 输出数组或对象 print_r($_GET); # var_dump() 输出数组或对象,并带上数据类型 var_dump($_GET); # print() // 和 print_r() 一样,但只能输出一个参数 print(json_encode($_GET)); # var_export() // 和 var_dump() 一样,只能输出符合php的合法代码 var_export($_GET); # 输出 helloworld Array ( [a] => hello [b] => world ) array(2) { ["a"]=> string(5) "hello" ["b"]=> string(5) "world" } {"a":"hello","b":"world"} array ( 'a' => 'hello', 'b' => 'world', )
# 字符串 $a = "字符串:\x61"; var_dump($a); # 数值 $b = 0x66;//十六进制 $c = 066;//八进制 var_dump($b,$c); # 数组 $d = [1,2,3]; //php 5.4 以后才支持的写法 $e = array(1,2,3); $f = array( 'a'=>1, 'b'=>2, 'c'=>3 ); var_dump($d,$e,$f); # 输出 string(11) "字符串:a" int(102) int(54) array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } array(3) { ["a"]=> int(1) ["b"]=> int(2) ["c"]=> int(3) }
$a = array(1,2,3,4,5); $b = ['abc',$a,2,3,1]; $c = [ 'a'=>'666', 'b'=>233, 'c'=>[ 10,20,30,40 ] ]; # 都代表在最后插入一个元素 $a[] = 6; array_push($a,7); var_dump($a); // 输出 // array(7) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) [4]=> int(5) [5]=> int(6) [6]=> int(7) } # 删除最后一个元素 $d = array_pop($a); var_dump($d); echo "<br />"; var_dump($a); // 输出 // int(7) // array(6) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) [4]=> int(5) [5]=> int(6) } # 取出最后一个元素,不删除 $d = end($a); var_dump($d); echo "<br />"; var_dump($a); // 输出 // int(6) // array(6) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) [4]=> int(5) [5]=> int(6) } # 取出第一个元素,并删除 array_shift($a); var_dump($a); // 输出 // array(5) { [0]=> int(2) [1]=> int(3) [2]=> int(4) [3]=> int(5) [4]=> int(6) } # 给出总元素个数 $d = count($c); var_dump($c); // 输出 // array(3) { ["a"]=> string(3) "666" ["b"]=> int(233) ["c"]=> array(4) { [0]=> int(10) [1]=> int(20) [2]=> int(30) [3]=> int(40) } } # 排序 sort($b); var_dump($b); // 输出 // array(5) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> string(3) "abc" [4]=> array(5) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) [4]=> int(5) } } # 根据键排序 ksort($b); var_dump($b); // 输出 // array(5) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> string(3) "abc" [4]=> array(5) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) [4]=> int(5) } } # 判断存在某个元素 $d = isset($a[6]); var_dump($d); // 输出 // bool(false) # 返回数组的键 $d = array_keys($a); var_dump($c); // 输出 // array(3) { ["a"]=> string(3) "666" ["b"]=> int(233) ["c"]=> array(4) { [0]=> int(10) [1]=> int(20) [2]=> int(30) [3]=> int(40) } } # 删除某个成员,但键值不会变(存在bug,不常用) unset($a[1]); var_dump($a); // 输出 // array(4) { [0]=> int(2) [2]=> int(4) [3]=> int(5) [4]=> int(6) } # 去掉数组中的某一部分并用其他值取代,第二个参数是起始位置 # 第三个参数是删除/替换长度,第四个参数不写就是删除 array_splice($a,1,2,array(1,2)); var_dump($a); // 输出 // array(4) { [0]=> int(2) [1]=> int(1) [2]=> int(2) [3]=> int(6) }
# 异或 var_dump(1 xor 0); // 输出 bool(true) # if | else | else if if($_GET['user']=='xiaotuan') { if(isset($_GET['password']) && $_GET['password']=='yes') { echo '登入成功'; } else { echo '登入失败'; } } else if($_GET['user']=='pork') { echo '登入成功'; } else { echo '登入失败'; } // 输出 // http://127.0.0.1/index.php?user=xiaotuan&&password=yes # 登入成功 // http://127.0.0.1/index.php?user=pork # 登入成功 // http://127.0.0.1/index.php?user=xiaotuan&&password=no # 登入失败 # switch switch($_GET['user']) { case 'xiaotuan': case 'yes': case 'no': { echo '登入成功'; break; } default: { echo '登入失败'; break; } } // 输出 // http://127.0.0.1/index.php?user=xiaotuan # 登入成功 // http://127.0.0.1/index.php?user=pork # 登入失败
# for 循环 for ($i = 0; $i < 10; $i++) { echo "$i "; } # while 循环 $i = 0; while ($i < 10) { echo "$i "; $i++; } # do while 循环 $i = 0; do { echo "$i "; $i++; } while ($i < 10); # foreach 循环 $a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; foreach($a as $key=>$value) { echo "$key=>$value".'<br />'; } print_r($a); # 输出 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0=>0 1=>1 2=>2 3=>3 4=>4 5=>5 6=>6 7=>7 8=>8 9=>9 Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 [6] => 6 [7] => 7 [8] => 8 [9] => 9 )
# include // 相当于头文件,当所需头文件不存在,只会警告 include "head.php"; # include_once // 与 include 类似,但整个文件仅加载一次 include_once "head.php"; # require // 相当于头文件,当所需头文件不存在,会报错 require "head.php"; # require_once // 与 require 类似,但整个文件仅加载一次 require_once "head.php"; # 补充 // 也可以将头文件设置为变量 $config = include "head.php";
/* 超级全局变量可以这样看,因为它是相对于全局变量而言的。 比全局变量更一个层次,全局变量不能作用到函数内部。 超全局变量可以作用到函数内部 */ # 超全局变量 global $a; $a = '默认值1'; $GLOBALS['b']='默认值2'; print_r($GLOBALS); # 输出 // Array ( [_GET] => Array ( ) [_POST] => Array ( ) [_COOKIE] => Array ( ) [_FILES] => Array ( ) [GLOBALS] => Array *RECURSION* [a] => 默认值1 [b] => 默认值2 ) # 函数 // 函数名是大小写无关 function fun() { echo "123"; } Fun(); # 输出 123 # 嵌套函数 // PHP的内部函数只要执行了,就是全局函数 function fun1() { function fun2() { echo "456"; } echo "123"; } fun1(); fun2(); # 输出 123456 # 超全局变量/全局变量和函数的运用 global $a; $a = '默认值'; $GLOBALS['b']='默认值'; function func() { global $a; echo $a; echo $GLOBALS['b']; } func(); # 输出 //默认值默认值
# 面向过程的连接数据库 $con=@mysqli_connect('127.0.0.1','root','','demo'); if(!$con) { echo "数据库连接失败"; return; } # 面向对象的连接数据库 $object = @new mysqli('127.0.0.1','root','','demo'); if($object->connect_errno) { echo "数据库连接失败"; return; } # 使用编码 mysqli_query($con,'set names utf8'); // 使用中文 // mysqli_query($con,'set names gbk'); # 插入数据 // MySQL指令 insert into `demo_table`(`data1`,`data2`) value('data1','data2'); // php指令 mysqli_query( $con, "insert into `demo_table`(`data1`,`data2`) values('{$_GET['data1']}','{$_GET['data2']}')" ); // http://127.0.0.1/demo/?data1=test1&data2=test2 # 修改数据 // 混合指令 $sql = "update `demo_table` set `data1`='{$_GET['data1']}',`data2`='{$_GET['data2']}' where id={$_GET['id']}"; if (mysqli_query($con, $sql)) { echo '修改成功了'; } else { echo '修改失败了'; } # 更新、条件、查询、删除、索引 略 // 视频 P20 P21 没看
?>
echo "<br />";
中的