<?php
/**
* ; php指令分隔符
* php 功能执行语句 必须以;结束
* 结构定义语句
*
*/
//! PHP运算符
function demo()
{
}
class demo
{
}
// 算数运算符 + - * / % 去余
// 能被4整除但不能被100整除的都是闰年,其余的年份均为平年
$year = date("Y");
// echo $year;
if ($year % 4 == 0 && $year % 100 !== 0) {
echo "{$year}是闰年";
} else {
echo "{$year}是平年";
}
// 控制随机数的范围 0-50
// echo mt_rand() % 50;
echo mt_rand(0, 50);
// 比较运算符 返回布尔型 用在流程控制语句
var_dump(11 > 10);
// 逻辑运算符 || && ! 返回布尔型 用在流程控制语句
/**
* || 或 两边的表达式只要一个为true 返回true
*
* && 且 两边的表达式全部为true 返回true
*
* !
* */
/**
* = 赋值运算符
* == 值比较
* === 严格比较 值 类型
*/
var_dump(1 > 0 || 4 > 5);
var_dump(0 === '0');
$username = 'admin';
//isset检验变量是否存在
if (isset($username) && $username === 'admin') {
echo "欢迎管理员{$username}回来";
}
$email = $_GET['email'];//filter_var检测邮箱 FILTER_VALIDATE_EMAIL邮箱常量
if (isset($email) && filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo '邮箱验证通过';
} else {
echo '请输入有效的邮箱';
}
ob_clean();
//三元运算符 表达式 ? :
// $pwd = sha1('wwwphpcn');//哈希运算
$pwd = isset($pwd) ? $pwd : 'root';
// 检测页码
// $page = isset($_GET['p']) ? $_GET['p'] : 1;
// ?? null合并运算符 告别isset()
$page = @$_GET['p'] ?? 1;
echo $page;
<?php
// ! 循环 while
$cities = ['合肥', '南京', '杭州', '苏州', '上海', '北京'];
next($cities);//移动指针
next($cities);
next($cities);
next($cities);
reset($cities);//复位指针
// echo current($cities);//获取数组长度
// while循环 入口判断型循环
// while ($city = current($cities)) {
// echo $city . '<br>';
// next($cities);
// }
// while ($city = current($cities)) :
// echo $city . '<br>';
// next($cities);
// endwhile;
// do..while出口型判断循环
// $i = 0;
// do {
// echo $cities[$i];
// $i++;
// } while ($i < count($cities));
// for 计数型循环
// for ($i = 0; $i < count($cities); $i++) {
// // break 提前结束循环
// if ($i > 2) break;
// echo $cities[$i];
// }
// continue 跳出某一轮循环 选择性输出
for ($i = 0; $i < count($cities); $i++) {
if ($i == 2 || $i == 3) continue;
echo $cities[$i];
}
foreach ($cities as $k => $v) {
}
在 PHP 中,有以下循环语句:
while - 只要指定条件为真,则循环代码块
do…while - 先执行一次代码块,然后只要指定条件为真则重复循环
for - 循环代码块指定次数
foreach - 遍历数组中的每个元素并循环代码块
PHP while 循环
只要指定的条件为真,while 循环就会执行代码块。
语法
while (条件为真) {
要执行的代码;
}
上例首先把变量 $x 设置为 1($x=1)。然后执行 while 循环,只要 $x 小于或等于 5。循环每运行一次,$x 将递增 1:
实例
<?php
$x=1;
while($x<=5) {
echo "这个数字是:$x <br>";
$x++;
}
?>
PHP do…while 循环
do…while 循环首先会执行一次代码块,然后检查条件,如果指定条件为真,则重复循环。
语法
do {
要执行的代码;
} while (条件为真);
下面的例子首先把变量 $x 设置为 1($x=1)。然后,do while 循环输出一段字符串,然后对变量 $x 递增 1。随后对条件进行检查($x 是否小于或等于 5)。只要 $x 小于或等于 5,循环将会继续运行:
实例
<?php
$x=1;
do {
echo "这个数字是:$x <br>";
$x++;
} while ($x<=5);
?>
请注意,do while 循环只在执行循环内的语句之后才对条件进行测试。这意味着 do while 循环至少会执行一次语句,即使条件测试在第一次就失败了。
PHP for 循环
如果您已经提前确定脚本运行的次数,可以使用 for 循环。
语法
for (init counter; test counter; increment counter) {
code to be executed;
}
参数:
init counter:初始化循环计数器的值
test counter:: 评估每个循环迭代。如果值为 TRUE,继续循环。如果它的值为 FALSE,循环结束。
increment counter:增加循环计数器的值
实例
<?php
for ($x=0; $x<=10; $x++) {
echo "数字是:$x <br>";
}
?>
PHP foreach 循环
foreach 循环只适用于数组,并用于遍历数组中的每个键/值对。
语法
foreach ($array as $value) {
code to be executed(执行 );
}
每进行一次循环迭代,当前数组元素的值就会被赋值给 $value 变量,并且数组指针会逐一地移动,直到到达最后一个数组元素。
下面的例子演示的循环将输出给定数组($colors)的值:
实例
<?php
$colors = array("red","green","blue","yellow");
foreach ($colors as $value) {
echo "$value <br>";
}
?>
<!-- 引入页眉 -->
<?php
// 配置文件引入
include __DIR__ . '/config/common.php';
// 引入页眉
include TMPL_PATH_PUBLIC . '/header.php';
?>
<!-- 主体 -->
<main>
<!-- 用户登录 -->
<!-- action="dologin.php" type="submit"> 此为同步提交-->
<form class="login" >
<table>
<caption>
用户登录
</caption>
<tbody>
<tr>
<td><label for="email">邮箱:</label></td>
<td><input type="email" name="email" id="email" /></td>
</tr>
<tr>
<td><label for="password">密码:</label></td>
<td><input type="password" name="password" id="password" /></td>
</tr>
<tr>
<td colspan="2"><button onclick="doLogin(this)" type="button">登录</button></td>
</tr>
</tbody>
</table>
</form>
<p>
<a href="register.php">没有帐号,请先注册</a>
</p>
</main>
<script>
async function doLogin(obj){
// alert('123');
const email = obj.form.email.value;
const password = obj.form.password.value;
// console.log(password);
//非空验证
//
if (email.length > 0 && password.length > 0) {
// 异步提交 fetch API
const response = await fetch('./lib/user/check.php', {
// 请求方法
method: 'POST',
// 请求头
headers: {
'Content-Type': 'application/json;charset=utf-8'
},
body: JSON.stringify({
email,
password
})
});
// 解析数据
const result = await response.json();
console.log(result);
} else {
alert('邮箱或密码不能为空');
}
}
</script>
<!-- 引入页脚 -->
<?php include TMPL_PATH_PUBLIC . '/footer.php' ?>
<?php
// 获取用户登录数据 不能用传统的表单格式提交 ($_POST) , json
// json当成文本流原始数据来接收
$json = file_get_contents('php://input');
// echo $json;
// $json并非php能识别的数据类型,它只是json格式的字符串而已
// json_decode函数 是把json ->转换为 php.array , true: 数组 不加TRUE 就是php对象
$user = json_decode($json, true);
//var_dump($user);
echo json_encode($user);//返回数组对象