php初识
为什么学php?
为了熟悉前后端交互 业务流程 学习php
安装PHPstudy?
通过live server 起的假的服务(没有后端和数据库),不能做逻辑处理(没有php的运行环境) 所以学习php
什么是php?
PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。
PHP(全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器")是一种通用开源脚本语言。
PHP 脚本在服务器上执行,结果以纯文本 json HTML 形式返回给浏览器
PHP 文件是什么?
PHP 文件可包含文本、HTML、CSS、JavaScript代码和 PHP 代码
PHP 代码在服务器上执行,结果以纯 文本/HTML/json 形式返回给浏览器
PHP 文件的默认文件扩展名是 ".php"
PHP 能做什么?
PHP 可以生成动态页面内容
PHP 可以创建、打开、读取、写入、关闭服务器上的文件
PHP 可以收集表单数据
PHP 可以发送和接收 cookie
PHP 可以添加、删除、修改您的数据库中的数据
PHP 可以限制用户访问您的网站上的一些页面
PHP 可以加密数据 (sha1 , md5 )
安装 phpstudy 包含两个内容
对于初学者建议使用集成的服务器组件,它已经包含了 PHP、Apache、Mysql 等服务,免去了开发人员将时间花费在繁琐的配置环境过程;
- Windows 系统可以使用phpStudy
- XAMPP XAMPP 支持 Mac OS 和 Windows 系统,下载地址:www.apachefriends.org/zh_cn/index…
服务器 Apache 会在本地起一个本地服务 http://localhost/ (以后启动phpstudy 必须通过http://localhost/ 来访问 绝对不能通过live serve)
学习phpstudy 的注意事项
1. 每天打开电脑 第一件事 启动 phpstudy
2. 以后启动运行phpstudy 访问根目录(apache服务器)必须通过http://localhost/ 来访问 绝对不能通过live server
3. http://localhost/ 起的服务的根目录 在 WWW (点击小图标 鼠标右键 网站根目录)
4. 以后我们写的所有php文件 必须放在 WWW 中
apache服务器(运行php)
域名: localhost:80 / 127.0.0.1:80
根目录: D:\phpstudy_pro\WWW (php文件 必须放在www中)
PHP基础语法
怎样使用php
PHP 脚本可以放在文档中的任何位置。 PHP 脚本以 结束:
<?php
// PHP 代码
?>
注意:
- php的语法比较严格 语句结束之后 一定要加";" 否则会报错;
- php 语法出错 会直接将错误输出到页面中(显示错误的 行号)
- PHP 代码在服务器上执行,结果以纯 文本 json HTML 形式返回给浏览器
php的输出语法
- echo 可以输出一个或多个字符串(多个字符串之间用逗号分隔);
- print 只允许输出一个字符串;
- print_r() 打印数组和对象;
<?php
echo "hello","world","Today","is","Thursday","<br>";
print "你好php";
print_r([1,2,3,4])
?>
php的注释
- 单行注释 (//)
- 多行注释 (/**/)
示例:
<?php
// 这是单行注释
/*
这是php多行注释
*/
?>
php变量
PHP 变量规则:
PHP 变量规则:
变量以 $ 符号开始,后面跟着变量的名称
变量名必须以字母或者下划线字符开始
变量名只能包含字母 数字字符 以及 下划线(A-z、0-9 和 _ )
变量名不能包含空格
变量名是区分大小写的($y 和 $Y 是两个不同的变量)
创建(声明)PHP 变量:
PHP 没有声明变量的命令,变量在您第一次赋值给它的时候被创建:
<?php
$a =100;
$str = "hello world";
$bool = true;
?>
注:PHP 也是一门弱类型语言(会根据变量的值,自动把变量转换为正确的数据类型)
PHP 变量作用域
- global (全局作用域);
- local (局部作用域);
- parameter (参数作用域);
- 在函数中声明的变量是局部变量,在函数外声明的变量是全局变量(全局变量和局部变量不会相互影响);
<?php
// 全局变量
$x = 5;
$y = 6;
$z = $x + $y;
echo $z;
echo "<br>";
// 在函数内声明的变量是局部变量
function fn(){
$x = 10;
$y = 20;
return $x+$y;
}
$result = fn();
echo $result;
?>
那么,如何将函数内的局部变量改为全局变量;
- 通过global 关键词 允许局部变量 访问全局变量
- 借助超级全局变量 $GLOBALS (类似js中的window) 访问全局变量
a. 通过global 关键词 允许局部变量 访问全局变量
<?php
$x = 5;
function fn(){
global $x; // 通过global 关键词 可以允许$x 访问全局的$x
$x = 10;
}
fn();
echo $x;
?>
b.借助超级全局变量 GLOBALS(类似js中的window)访问全局变量注:PHP将所有全局变量存储在一个名为GLOBALS[index] 的数组中。 index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量
<?php
$x = 5;
function fn(){
$GLOBALS["x"] = 10; //
}
fn();
echo $x;
?>
- 参数作用域(形式参数也是局部变量)
<?php
$a = 10;
$b = 20;
function fn($a,$b){
$a = 100;
$b = 200;
echo $a."|".$b."<br>";
}
fn(100,200);
echo $a."|".$b;
?>
php常量
常量是全局的
常量在定义后,默认是全局变量,可以在整个运行的脚本的任何地方使用。
定义方法:
1. 定义常量const
2. define(name,value)
name 常量名
value 常量值
<?php
const a = 100;
echo a;
define("a",100);
echo a."<br>";
?>
PHP数据类型
- php基本数据类型
String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值); 注:PHP var_dump() 函数返回变量的数据类型和值; 除此之外还有 is_string(),is_int(),is_float(),is_bool(),is_null(),is_array() 是=> true(在页面显示为1 ) 不是返回 (false => "")
<?php
// 字符串
$str = "hello哈哈";
var_dump($str);
echo is_string($str);
// 整型
$int = 100;
var_dump($int);
echo is_int($int);
// 浮点型
$float = 100.50;
var_dump($float);
echo is_float($float);
// 布尔
$bool = true;
var_dump($bool);
echo is_bool($bool);
// null
$n = null;
var_dump($n);
echo is_null($n);
// 数组(一维数组)
$arr = array(1,2,3,4);
// var_dump($arr);
print_r($arr);
echo is_array($arr);
?>
php运算符
1. 算术运算符
2. 关系运算符
3. 逻辑运算符
4. 赋值运算符
5. 三元运算符
6. 并置运算符 (.)
php选择
- if语句
if( 条件1 ){
}else if( 条件2 ){
}else{
}
switch语句
switch( 数据1 ){
case 数据2:
break;
default:
}
php 循环
- for
for(初始值; 条件; 增量){}
- foreach
foreach( $array as $value ){}
- while
while(条件){}
- do while
do{ }while(条件)
php字符串拼接
字符串拼接方式:
1.借助 并置运算符(.作用类似js中的+)
$str = $a." ".$b;
echo $str;
2.可以直接在字符串中拼接变量(此方法仅适用于"" 的字符串 ''不行)
$str = "$a,$b"; 类似ES6字符串模板拼接
echo $str;
2.1对于数组类型的取值拼接 如果需要多注意(将对应取值使用 {} 包裹起来)
$str = $GLOBALS["a"].",".$GLOBALS["b"];
echo $str;
$str="{$GLOBALS["a"]},{$GLOBALS["b"]}";
echo $str;
php字符串的方法
strlen() 函数返回字符串的长度(字节数)。
$str = "hello world!哈哈";
$len = strlen($str);
echo $len;
strpos() 函数 查找某个或某段字符在字符串中第一次出现的位置 能查到返回对应的下标 查不到 返回false
$str = "good good study , day day up";
$index = strpos($str,"day");
echo $index;
explode() 用特定的字符 将字符串切割为数组 (类似split)
$str = "good good study , day day up";
$arr = explode(" ",$str);
print_r($arr);
implode() 用特定的字符 将数组拼接为字符串 (类似join)
join() implode() 的别名。
$arr = array("good","good","study",",","day","day","up");
// print_r($arr);
// $str = implode(" ",$arr);
$str = join(" ",$arr);
echo $str;
str_ireplace() 用新的字符串替换旧的字符串(忽略大小写)
str_replace() 用新的字符串替换旧的字符串(不忽略大小写)
$str = "good good study , day day up";
$newStr = str_replace("day","money",$str);
echo $newStr;
php数组
在 PHP 中,有三种类型的数组:
- 数值数组 - 带有数字 ID 键的数组;
- 关联数组 - 带有指定的键的数组,每个键关联一个值;
- 多维数组 - 包含一个或多个数组的数组;
- 数值数组
// 定义数组
$arr = array('a', 'b', 'c');
// 数量
$arrlength = count( $arr);
// 结构中显示键值
print_r($arr);
//遍历数组
for($x=0;$x<$arrlength;$x++){
echo $cars[$x];
echo "<br>";
}
- 关联数组
// 关联数两种创建方式 (以键值对形式存在的数组 类似js的对象)
//1.
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
//2.
$age = array();
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";
print_r($array); // 结构中显示键值
//遍历关联数组
foreach($age as $x=>$x_value){ // $array as $key=>$val
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
- 多维数组
$arr = array(
array(
"goodsId"=>"A001",
"goodsName"=>"Redmi K30",
"goodsMsg"=>"120Hz流速屏,全速热爱",
"goodsImg"=>"https://img.qiyuandi.com/images/4/phpjcfzx3se4zzgn.jpg?thumb=1&w=250&h=250&f=webp&q=90",
"goodsPrice"=>1559,
"buyNum"=>1
),
array(
"goodsId"=>"A002",
"goodsName"=>"Redmi K30",
"goodsMsg"=>"120Hz流速屏,全速热爱",
"goodsImg"=>"https://img.qiyuandi.com/images/4/phpjcfzx3se4zzgn.jpg?thumb=1&w=250&h=250&f=webp&q=90",
"goodsPrice"=>1559,
"buyNum"=>1
),
array(
"goodsId"=>"A003",
"goodsName"=>"Redmi K30",
"goodsMsg"=>"120Hz流速屏,全速热爱",
"goodsImg"=>"https://img.qiyuandi.com/images/4/phpjcfzx3se4zzgn.jpg?thumb=1&w=250&h=250&f=webp&q=90",
"goodsPrice"=>1559,
"buyNum"=>1
),
array(
"goodsId"=>"A004",
"goodsName"=>"Redmi K30",
"goodsMsg"=>"120Hz流速屏,全速热爱",
"goodsImg"=>"https://img.qiyuandi.com/images/4/phpjcfzx3se4zzgn.jpg?thumb=1&w=250&h=250&f=webp&q=90",
"goodsPrice"=>1559,
"buyNum"=>1
),
array(
"goodsId"=>"A005",
"goodsName"=>"Redmi K30",
"goodsMsg"=>"120Hz流速屏,全速热爱",
"goodsImg"=>"https://img.qiyuandi.com/images/4/phpjcfzx3se4zzgn.jpg?thumb=1&w=250&h=250&f=webp&q=90",
"goodsPrice"=>1559,
"buyNum"=>1
),
);
JSON
// json_decode() JSON字符串转为JSON对象
$str = '{"a":"你好", "b":"hello123"}';
$obj = json_decode($str);
var_dump($obj);
// json_encode() JSON对象转为JSON字符串
$obj = array(
"a"=>"你好",
"b"=>"hello123"
);
$str2 = json_encode($obj, JSON_UNESCAPED_UNICODE);
echo $str2;
PHP数组的方法
数组头尾新增和删除
array_unshift(); 头部新增
array_push(); 尾部新增
array_shift() 头部删除
array_pop() 尾部删除
$arr = array("x","y","z");
array_unshift($arr,1);
array_push($arr,4);
print_r($arr);
array_shift($arr);
array_pop($arr);
print_r($arr);
数组增删改
array_splice() 任意位置增删改
$arr = array("x","y","z");
array_splice($arr,1,1);
array_splice($arr,1,0,"hello");
array_splice($arr,1,1,"hello");
print_r($arr);
数组裁切
array_slice(array, startIndex,length); [startIndex,length]
$arr = array("x","y","z");
$newList = array_slice($arr,1,1);
print_r($newList);
数组反转
array_reverse(); 返回反转后的新数组
$arr = array("x","y","z");
$list = array_reverse($arr);
print_r($list)
数组转字符串
join()/implode() 数组转字符串 (注 join() implode() 的别名)
$arr = array("x","y","z");
$str = join($arr,"");
$str = implode($arr,"");
echo $str;
数组中是否存在某元素
in_array(item,$arr); // 存在返回true 不存在返回false
$arr = array("x","y","z");
$res = in_array(1,$arr);
echo $res;
数组去重
array_unique($arr) // 传入一个数组 返回去重后的新数组
$arr = [1,1,1,1,1,1,1,1,1,1];
print_r(array_unique($arr));
数组排序;
a.普通数组(数值数组)
sort() - 对数组进行升序排列
rsort() - 对数组进行降序排列
//纯数字排序
$list = array(4,6,2,22,11);
sort($list);
// rsort($list);
print_r($list);
//非纯数字排序
$cars=array("Volvo","BMW","Toyota");
sort($cars);
print_r($cars);
b. 关联数组;
ksort() - 根据关联数组的键,对数组进行升序排列;
krsort() - 根据关联数组的键,对数组进行降序排列;
asort() - 根据关联数组的值,对数组进行升序排列;
arsort() - 根据关联数组的值,对数组进行降序排列;
$list=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
ksort($list);
// krsort($list);
// asort($list);
// arsort($list);
print_r($list);
超级全局变量
PHP中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用。 你不需要特别说明,就可以在函数及类中使用; PHP 超级全局变量列表:
- $GLOBALS
- $_SERVER
- $_REQUEST
- $_POST
- $_GET
- $_COOKIE
- $_SESSION
PHP $GLOBALS
$GLOBALS 是PHP的一个超级全局变量组,在一个PHP脚本的全部作用域中都可以访问。
$GLOBALS 是一个包含了全部变量的全局组合 /数组。变量的名字就是数组的键。
$a = 100;
$b = 200;
echo $GLOBALS["a"] + $GLOBALS["b"];
PHP $_SERVER
$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 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_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>";
PHP $_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>
get.php
$user = $_GET["user"];
$pwd = $_GET["pwd"];
echo $user."=>".$pwd;
PHP $_POST
POST广泛接收以POST方式传递过来的数据(form传递/ajax传递),我们可以使用超级全局变量_POST 来对应字段(键名)的数据
html页面结构
<form action="../php/post.php" method="POST">
<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>
post.php
$user = $_POST["user"];
$pwd = $_POST["pwd"];
echo $user."=>".$pwd;
PHP $_REQUEST
REQUEST广泛接收以(get/post都可以)方式传递过来的数据(form传递/ajax传递),我们可以使用超级全局变量_REQUEST 来对应字段(键名)的数据
html页面结构
<form action="../php/post.php" method="POST">
<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>
post.php
$user = $_REQUEST["user"];
$pwd = $_REQUEST["pwd"];
echo $user."=>".$pwd;
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!