PHP笔记
三种输出方法
- echo
打印一个或多个字符串,字符串之间以分号分隔,以 点 . 进行字符串拼接 - print
打印一个字符串 - print_r
打印一个或多个字符串,字符串之间以分号分隔
变量
变量用$声明,后面紧跟变量名称
$a = 10;
$b = 20;
echo($a+$b);
// 30
在函数内如何访问全局变量
- 借助结构global关键词
$a = 10;
$b = 20;
echo($a+$b);//30
function fn(){
global $a,$b;
$a = 10;
$b = 20;
echo($a+$b);//300
}
- 借助超级全局变量$GLOBALS
$a = 10;
$b = 20;
echo($a+$b);//30
function fn(){
$GLOBALS["a"] = 100;
$GLOBALS["b"] = 200;
echo($a+$b);//300
}
echo($a+$b);//300
php常量
- const
const a = 100;
- define(name,val)
define(b,200);
php数据类型
var_dump()函数返回数据类型和值
$int = 100;
var_dump($int); //int
$str = "hello";
var_dump($str); //string(5)
判断数据类型
is_string,is_integer…
判断正确返回1,否则返回空
$int = 100;
echo is_int($int); //1=>true
$str = "hello";
echo is_string($str); //1=>true
字符串拼接
- 并置运算符 .
$a="hello";
$b="world";
$c=$a." ".$b;
//$c="hello world";
- 直接拼接(仅使用双引号,单引号不适用)
$a="hello";
$b="world";
$c="$a $b;
//$c="hello world";
数组的取值拼接要将值使用{}包裹起来
$a="hello";
$b="world";
$c="$a $b;
//$c="hello world";
字符串方法
- strlen()
返回字符串长度(字节数)
$str = "hello world!哈哈";
$len = strlen($str);/$len = 16;
- strpos()
查找某段字符串在字符串中第一次出现的位置,返回其下标,若未查询到则返回false
$str = "good good study , day day up";
$index = strpos($str,"day");//$index=18;
- explode()
用特定的字符 将字符串切割为数组 (类似split)
$str = "good good study , day day up";
$arr = explode(" ",$str);
/*$arr = Array
(
[0] => good
[1] => good
[2] => study
[3] => ,
[4] => day
[5] => day
[6] => up
)*/
- implode() 和 join()
用特定的字符 将数组拼接为字符串 (类似join)
$arr = array("good","good","study",",","day","day","up");
// $str = implode(" ",$arr);
$str = join(" ",$arr);
//$str = "good good study , day day up";
- str_ireplace() 用新的字符串替换旧的字符串(忽略大小写)
str_replace() 用新的字符串替换旧的字符串(不忽略大小写)
$str = "good good study , day day up";
$newStr = str_replace("day","money",$str);
$newStr = "good good study , money money up";
数组
方法
- count()
返回数组的长度 - print_r()
以结构显示数组 -
array_unshift(); 头部新增 array_push(); 尾部新增 array_shift() 头部删除 array_pop() 尾部删除
$arr = array("x","y","z");
array_unshift($arr,1);
array_push($arr,4);
//$arr=array(1,"x","y","z",4);
array_shift($arr);
array_pop($arr);
//$arr=array("x","y","z");
- array_splice() 任意位置增删改
array_splice($arr,startIndex,length,$arr)
$arr:要改变的数组
startIndex:删除元素的开始位置,若为负数则从尾部数起
length:要删除的长度,为0则不删除
$arr:要插入的数组或字符串
$arr = array("x","y","z");
array_splice($arr,1,1);
//$arr = array("x","z");
array_splice($arr,1,0,"hello");
//$arr = array("x","hello","z");
array_splice($arr,1,1,"hello");
//$arr = array("x","z");
- array_slice()
取出数组中的一段值并返回
array_slice(array, startIndex,length,preserve);
preserve:设置返回的数组是否保留键名(true false),若有字符串键名则默认保留,否则默认重置键名
$arr = array("a"=>"x","b"=>"y","c"=>"z");
$newList = array_slice($arr,1,1);
//$newList = array("b"=>"y");
- array_reverse();
返回反转后的新数组
$arr = array("x","y","z");
$list = array_reverse($arr);
//$arr = array("z","y","x");
- join()/implode()
数组转字符串
join()/implode(array,separator)
separator:规定拼接数组元素的值,默认为空字符串 “”
$arr = array("x","y","z");
$str = join($arr,"");
$str = implode($arr,"");
//$str = "xyz";
- in_array()
判断数组中是否存在某元素,存在返回true,否则返回false
in_array(search,array,type)
type:若设置为true,则以===来判断,若search值为字符串,搜索时会区分大小写 - array_unique()
传入一个数组,返回去重后的新数组 - 数组排序
若为非数值,则以对应的ASCII码来排序
a.普通数组(数值数组)
sort() - 对数组进行升序排列
rsort() - 对数组进行降序排列
b. 关联数组;
ksort() - 根据关联数组的键,对数组进行升序排列;
krsort() - 根据关联数组的键,对数组进行降序排列;
asort() - 根据关联数组的值,对数组进行升序排列;
arsort() - 根据关联数组的值,对数组进行降序排列;
关联数组
以键值对形式存在的数组,类似js的对象
$arr = array(
"Perter"=>35,
"jone"=>19,
"Tom"=>25);
//也可通过$arr["Tom"]=25 或$arr->"Perter"的方式赋值/取值
foreach($arr as $val){
echo $val."<br>"
}
遍历关联数组
foreach($age as $x=>$x_value){
// $array as $key=>$val
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
多维数组
$goods=array(
array(
"goodsId"=>"A001",
"goodsName"=>"华为",
"goodsMsg"=>"华为荣耀V5",
"buyNum"=>1
)
array(
"goodsId"=>"A001",
"goodsName"=>"华为",
"goodsMsg"=>"华为荣耀V5",
"buyNum"=>1
)
);
JSON
-
json_encode()
将PHP语法中的数组转为JSON字符串 json_encode()默认会将数据中的中文编码,前端接收数据解析之后还是正常数据`` 代码在服务器上执行,结果以纯文本/HTML/json形式返回给浏览器(关联数据转化为json类型的字符串时就是对象结构) 前端请求的数据就是php文件echo输出的文本/HTML /json,一个接口一般只返回一条纯json字符串
-
json_decode()
将json字符串转换为PHP语法中的数组
循环
- for
- while
- do…while
- foreach
用于数组遍历
$arr=array("a","b","c");
foreach($arr as $value){
echo $value.","
}
//a,b,c,0
ajax提交php
post提交
var xhr = new XMLHttpRequest;
- post提交数据时将参数数据队列作为一个参数放到send中
xhr.open("post","php/post.php");
- 设置请求头(配置提交的表单数据类型Content-Type: application/X-www-form-urlencoded)
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
- 提交数据
xhr.send(`user=${user}&pwd=${pwd}`);
超级全局变量
- $GLOBALS
- $_SERVER
- $_REQUEST
- $_POST
- $_GET
- $_COOKIE
- $_SESSION
- $GLOBALS
$GLOBALS 是一个包含了全部变量的全局组合 /数组。变量的名字就是数组的键。
$a = 100;
$b = 200;
echo $GLOBALS["a"] + $GLOBALS["b"];
- $_SERVER
$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组
属性 | 描述 |
---|---|
$_SERVER[‘SERVER_ADDR’] | 当前运行脚本所在的服务器的 IP 地址。 |
$_SERVER[‘SERVER_NAME’] | 当前运行脚本所在的服务器的主机名。如果脚本运行于虚拟主机中,该名称是由那个虚拟主机所设置的值决定 |
$_SERVER[‘SERVER_PROTOCOL’] | 请求页面时通信协议的名称和版本。例如,“HTTP/1.0”。 |
$_SERVER[‘REQUEST_METHOD’] | 访问页面使用的请求方法;例如,“GET”, “HEAD”,“POST”,“PUT”。 |
$_SERVER[‘REQUEST_TIME’] | 请求开始时的时间戳。从 PHP 5.1.0 起可用。 (如:1377687496) |
$_SERVER[‘QUERY_STRING’] | query string(查询字符串),如果有的话,通过它进行页面访问。 |
$_SERVER[‘REMOTE_ADDR’] | 浏览当前页面的用户的 IP 地址。 |
$_SERVER[‘REMOTE_HOST’] | 浏览当前页面的用户的主机名。DNS 反向解析不依赖于用户的 REMOTE_ADDR。 |
$_SERVER[‘REMOTE_PORT’] | 用户机器上连接到 Web 服务器所使用的端口号。 |
属性 | 描述 |
---|---|
$_SERVER[‘SERVER_ADDR’] | 当前运行脚本所在的服务器的 IP 地址。 |
$_SERVER[‘SERVER_NAME’] | 当前运行脚本所在的服务器的主机名。如果脚本运行于虚拟主机中,该名称是由那个虚拟主机所设置的值决定 |
$_SERVER[‘SERVER_PROTOCOL’] | 请求页面时通信协议的名称和版本。例如,“HTTP/1.0”。 |
$_SERVER[‘REQUEST_METHOD’] | 访问页面使用的请求方法;例如,“GET”, “HEAD”,“POST”,“PUT”。 |
$_SERVER[‘REQUEST_TIME’] | 请求开始时的时间戳。从 PHP 5.1.0 起可用。 (如:1377687496) |
$_SERVER[‘QUERY_STRING’] | query string(查询字符串),如果有的话,通过它进行页面访问。 |
$_SERVER[‘REMOTE_ADDR’] | 浏览当前页面的用户的 IP 地址。 |
$_SERVER[‘REMOTE_PORT’] | 用户机器上连接到 Web 服务器所使用的端口号。 |
@header("content-type:text/html;charset=utf-8");
echo "服务器地址:"."{$_SERVER['SERVER_ADDR']}<br>";
echo "服务器的主机名:"."{$_SERVER['SERVER_NAME']}<br>";
echo "服务器的主机名的端口:"."{$_SERVER['SERVER_PORT']}<br>";
echo "请求页面时通信协议的名称和版本:"."{$_SERVER['SERVER_PROTOCOL']}<br>";
echo "访问页面使用的请求方法:"."{$_SERVER['REQUEST_METHOD']}<br>";
echo "请求开始时的时间戳:"."{$_SERVER['REQUEST_TIME']}<br>";
echo "query string(查询字符串):"."{$_SERVER['QUERY_STRING']}<br>";
echo "浏览当前页面的用户的 IP 地址:"."{$_SERVER['REMOTE_ADDR']}<br>";
echo "用户机器上连接到Web服务器所使用的端口号:"."{$_SERVER['REMOTE_PORT']}<br>";
- $_GET
$_GET 广泛接收以GET方式传递过来的数据 (form传递/ajax传递),我们可以使用超级全局变量 $_GET 来对应字段(键名)的数据
HTML界面结构:
<form action="../php/get.php" method="GET">
<div>
<label for="user">用户名</label>
<input name="user" type="text">
<span class="user_span"></span>
</div>
<div>
<label for="pwd">密码:</label>
<input name="pwd" type="text">
<span class="pwd_span"></span>
</div>
<div>
<button id="logBtn">注册</button>
<input type="reset">
</div>
</form>
php界面:
$user = $_GET["user"];
$pwd = $_GET["pwd"];
echo $user."=>".$pwd;
- $_POST
$ _POST广泛接收以POST方式传递过来的数据 (form传递/ ajax传递),我们可以使用超级全局变量$ _POST 来对应字段(键名)的数据(与$_GET用法相同) - $_REQUEST
$_REQUEST 广泛接收以(get/post都可以)方式传递过来的数据 (form传递/ajax传递),我们可以使用超级全局变量 $_REQUEST 来对应字段(键名)的数据