年后第一节课,我们开始学习PHP。主要内容有:
一、PHP开发环境搭建。
安装谷歌浏览器,安装phpstrom,安装PHP工具箱。都是傻瓜操作,一路下一步。需要注意,PHP的版本切换为最新的,虚拟域名新建好后需要在host中添加相应的链接和域名(127.0.0.1 www.xxx.com)。
二、PHP工作原理

原理如图所示,客户端(用户操作的例如浏览器)通过发送合同谈判请求,然后web服务器(apache)接受http的请求与响应,开始对发过来的数据进行解析,它只认html,对非html例如php出现的话,他会交给PHP。exe进行解析,然后解析成html再返回给web服务器,web服务器然后将html文档给浏览器,浏览器解析成可视的网页供用户浏览。
三、PHP与html混编
注意只有php文件才能识别出里面的php'代码,然后出现混编时php标签应该闭合(<?php?>),echo输出html代码,也可以用heredoc输出大段html代码
四、变量
变量声明必须再开头加$,单行输出简写为<?= ?>,变量的特点可以被更新,可以被释放清空。
五、常量
特点:不能更新 不能删除 不受作用域限制
声明两种方式:define(‘变量名’, ‘值’) const 常量名 = 值;
两者区别:const定义的值不能为表达式,应为一个确定的值(不需运算)
六、数组
声明方式同js一样,有索引数组和关联数组,索引数组是将索引和值一一绑定,比较快捷缺点没有可读性;关联数组是将键值成对出现,通过键的名字可以了解值的用途;遍历for while 都可以,针对关联数组的foreach使用起来比较方便
七、单双引号的用法
单引号用来作为简单的字符串和变量拼接用;双引号可以解析变量 转义字符等 例如“<span>{$a}</span>”
八、数据类型
标量类型(单值类型)字符串 数字都是 还有布尔型,true用echo输出为1;gettype可以查看数据类型
复合类型(多值变量) 对象就是代表 通过实例化一个类声明一个对象 $obj = new strClass();
NULL类型 is_null判断是否为NULL类型
资源类型 is_resource判断
代码:
<?php
// 标量类型 也是单值类型 就是一个变量里只有一个值 之前的数值 字符串都是 还有布尔型
$win = true;
//输出后转换成1
echo $win;
echo '<hr>';
//gettype可以查看类型
echo gettype($win);
echo '<hr>';
//var_dump 可以查看详细情况
var_dump($win);
echo '<hr>';
// 复合类型 多值变量 有对象
// 用标准类创建一个对象
$obj = new stdClass();
// 添加属性和方法
$obj->name = 'jij';
$obj->getName = function ($obj) {
return $obj->name;
};
echo $obj->name;
echo '<br>';
//call_user_func 是通过第一个参数为回调函数来用 其他的参数就是回调函数的参数
echo call_user_func($obj->getName, $obj);
echo '<br>';
echo call_user_func_array($obj->getName, [$obj]);
echo '<hr>';
// NULL 资源类型
$rand;
//错误 返回null 没有定义
var_dump($rand);
echo '<br>';
$rand = null;
// 判断是否为空
echo (is_null($rand));
echo '<hr>';
// 资源类型
$fp = fopen('demo01.html', 'r');
var_dump($fp);
echo (is_resource($fp));点击 "运行实例" 按钮查看在线实例
<!--html和php的混编-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title><?php echo '员工管理系统'?></title>
<style>
table,th,td {
border: 1px solid #666;
padding: 8px;
}
table {
border-collapse: collapse;
width: 80%;
text-align: center;
margin: 30px auto;
}
thead tr:first-of-type {
background-color: lightblue;
}
tbody tr:hover {
background-color: #efefef;
}
table > caption {
font-size: 1.2rem;
margin-bottom: 15px;
}
table + p {
text-align: center;
}
</style>
</head>
<body>
<table>
<caption>员工信息表</caption>
<thead>
<tr>
<th>编号</th>
<th>姓名</th>
<th>年龄</th>
<th>性别</th>
<th>邮箱</th>
<th>密码</th>
</tr>
</thead>
<tbody>
<?php
echo '<tr>';
echo '<td>1</td>';
echo '<td>猪哥</td>';
echo '<td>30</td>';
echo '<td>男</td>';
echo '<td>zg@php.cn</td>';
echo '<td>123456</td>';
echo ' </tr>';
?>
<?php echo
'<tr>
<td>2</td>
<td>朱老师</td>
<td>40</td>
<td>男</td>
<td>zls@php.cn</td>
<td>123456</td>
</tr>';
?>
<tr>
<td>3</td>
<td>西门大官人</td>
<td>50</td>
<td>男</td>
<td>xmdgr@php.cn</td>
<td>123456</td>
</tr>
<tr>
<td>4</td>
<td>灭绝师太</td>
<td>60</td>
<td>女</td>
<td>mjst@php.cn</td>
<td>123456</td>
</tr>
<tr>
<td>5</td>
<td>韦小宝</td>
<td>20</td>
<td>男</td>
<td>wxb@php.cn</td>
<td>123456</td>
</tr>
</tbody>
</table>
<p>总计: 5人</p>
</body>
</html>
<!--这些html代码,使用php应该如何生成?-->点击 "运行实例" 按钮查看在线实例
<?php
//php中的注释分单行和多行
//这个是单行
/*这个是多行*/
/*php变量定义规则
*1 变量有类型和值两个属性
* 2 php的变量是弱类型
* 3 变量必须以$开头
* 4 变量名称必须是合法的名称: 字母/数字/下划线 开头不能是数字
*
* */
//定义文档标题
$title = '员工信息系统';
//定义表格标题
$tabletitle = '员工信息表';
//定义员工总数
$total = 5;
//变量可以被更新
$tabletitle = 'PHP讲师一览表';
//常量不会被更新 不会改变所以 像php中文网这样的不会轻易改变的可以设置为常量
define('SITE_NAME', 'PHP中文网');
//表格标题可以更新为
$tabletitle = '<a href="">'.SITE_NAME.'</a>讲师一览表';
//常量不允许被更新
//SITE_NAME = 'php.cn';
//变量可以被销毁 此时页面中显示错误变量未定义
//unset($tabletitle);
//常量是不能被删除的
//unset(SITE_NAME);
//数组同js中一样
$user = [1,'猪哥',30, '男', 'zg@php.cn','123456'];
//echo $user[1];
//echo count($user);
//关联数组
//我们需要关联数组通过键来明白里面值的用途
$user1 = [
'id' => 1,
'name' => '猪哥哥',
'age' => 30,
'gender' => '男',
'email' => 'zg@php.cn',
'password' => '888888',
];
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title><?= $title?></title>
<style>
table,th,td {
border: 1px solid #666;
padding: 8px;
}
table {
border-collapse: collapse;
width: 80%;
text-align: center;
margin: 30px auto;
}
thead tr:first-of-type {
background-color: lightblue;
}
tbody tr:hover {
background-color: #efefef;
}
table > caption {
font-size: 1.2rem;
margin-bottom: 15px;
}
table + p {
text-align: center;
}
</style>
</head>
<body>
<table>
<caption>
<?php
// echo '<span style="color:red;">'.$tabletitle.'</span>'
// 可以通过上面的字符串加连接符加变量的方式,也可以用下面的用双引号解析花括号的方式
echo "<span style='color:red;'>{$tabletitle}</span>"
?>
</caption>
<thead>
<tr>
<th>编号</th>
<th>姓名</th>
<th>年龄</th>
<th>性别</th>
<th>邮箱</th>
<th>密码</th>
</tr>
</thead>
<tbody>
<tr>
<?php echo"<td>{$user[0]}</td>
<td>{$user[1]}</td>
<td>{$user[2]}</td>
<td>{$user[3]}</td>
<td>{$user[4]}</td>
<td>{$user[5]}</td>";
?>
</tr>
<!-- 可以用for循环遍历 -->
<tr bgcolor="#deb887">
<?php
for ($i=0;$i<count($user);$i++) {
echo "<td>{$user[$i]}</td>";
}
?>
</tr>
<!-- 也可以用while循环 初始变量在外部 -->
<tr bgcolor="aqua">
<?php
$i = 0;
while ($i < count($user)) {
echo "<td>{$user[$i]}</td>";
$i++;
}
?>
</tr>
<!-- 关联数组也可以用for循环 -->
<tr bgcolor="#7fffd4">
<?php
for ($i=0; $i<count($user1); $i++) {
// current输出当前指针指向的值
echo '<td>'.current($user1).'</td>';
next($user1);
}
?>
</tr>
<!-- for循环用另一种方法 -->
<tr bgcolor="#9932cc">
<?php
// 重置指针
reset($user1);
for ($i=0; $i<count($user1); $i++) {
// key方法返回当前指针指向的键名
$key = key($user1);
echo "<td>{$user1[$key]}</td>";
next($user1);
}
?>
</tr>
<!-- for循环遍历关联数组比较麻烦 用foreach -->
<tr bgcolor="#a9a9a9">
<?php
foreach ($user1 as $value) {
echo "<td>{$value}</td>";
}
?>
</tr>
<tr>
<td>2</td>
<td>朱老师</td>
<td>40</td>
<td>男</td>
<td>zls@php.cn</td>
<td>123456</td>
</tr>
<tr>
<td>3</td>
<td>西门大官人</td>
<td>50</td>
<td>男</td>
<td>xmdgr@php.cn</td>
<td>123456</td>
</tr>
<tr>
<td>4</td>
<td>灭绝师太</td>
<td>60</td>
<td>女</td>
<td>mjst@php.cn</td>
<td>123456</td>
</tr>
<tr>
<td>5</td>
<td>韦小宝</td>
<td>20</td>
<td>男</td>
<td>wxb@php.cn</td>
<td>123456</td>
</tr>
</tbody>
</table>
<p>总计: 5人</p>
</body>
</html>点击 "运行实例" 按钮查看在线实例
<?php
// 标量类型 也是单值类型 就是一个变量里只有一个值 之前的数值 字符串都是 还有布尔型
$win = true;
//输出后转换成1
echo $win;
echo '<hr>';
//gettype可以查看类型
echo gettype($win);
echo '<hr>';
//var_dump 可以查看详细情况
var_dump($win);
echo '<hr>';
// 复合类型 多值变量 有对象
// 用标准类创建一个对象
$obj = new stdClass();
// 添加属性和方法
$obj->name = 'jij';
$obj->getName = function ($obj) {
return $obj->name;
};
echo $obj->name;
echo '<br>';
//call_user_func 是通过第一个参数为回调函数来用 其他的参数就是回调函数的参数
echo call_user_func($obj->getName, $obj);
echo '<br>';
echo call_user_func_array($obj->getName, [$obj]);
echo '<hr>';
// NULL 资源类型
$rand;
//错误 返回null 没有定义
var_dump($rand);
echo '<br>';
$rand = null;
// 判断是否为空
echo (is_null($rand));
echo '<hr>';
// 资源类型
$fp = fopen('demo01.html', 'r');
var_dump($fp);
echo (is_resource($fp));点击 "运行实例" 按钮查看在线实例
总结:
1、了解了php的工作原理,清楚了他作为后端的一种解释语言所具备的功能;
2、清楚了变量与常量的特点和具体区别
3、单双引号的区别具体化,比以前理解的更深刻
4、foreach确实再关联数组中应用方便,以前都这几个循环具体应用比较含糊
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号