php - 如何在不影响 PHP 中的第一个函数的情况下执行第二个函数?
问题描述
正如标题所说,我想在执行第一个函数后执行第二个函数。换句话说,如果用户单击“绘制第一个数字”按钮,将显示一个 1-10 的随机数以及一个“绘制第二个数字”按钮,然后如果用户单击“绘制第二个数字”按钮,另一个随机数 1 -10 将显示。
我尝试了以下代码,但是当我单击“绘制第二个数字”按钮时,它会让我回到流程的开始。
<?php
if (isset($_POST['firstnumber'])) {
function roll () {
return mt_rand(1,10);
}
echo 'First Number: '.roll().'<form method="post"><input type="submit" value="Draw second number" name="secondnumber"></form>';
if (isset($_POST['secondnumber'])) {
echo 'Second Number: '.roll();
}
}
?>
<form method="post">
<input type="submit" value="Draw first number" name="firstnumber">
</form>
我希望代码在单击“第二个数字”按钮时显示第二个数字,而不是转到初始代码。
解决方案
在文件的开头,您检查以下条件
<?php if (isset($_POST['firstnumber'])) {
所以这个 if 语句中的所有内容只有在语句评估为 true 时才会执行。
如果您要提交硬编码的 HTML 公式(“firstnumber”公式)。If 语句的计算结果为 true,因此其中的代码会运行。
在 If 语句中,您调用先前定义的函数roll();
并回显另一个公式。
只有当上述 if 语句被评估为真时,才会回显这个公式(“secondnumber”一)。
如果您现在提交第二个公式(“secondnumber”之一),则顶部的 if 语句评估为false,因为$_POSTfirstnumber
中的字段未设置!
为什么没有设置?因为您刚刚提交了一个公式(“secondnumber”),它没有任何名为firstnumber
.
试试下面的代码:
<?php
function roll() {
return mt_rand(1,10);
}
if (isset($_POST['firstnumber']) === true || isset($_POST['secondnumber']) === true) {
if (isset($_POST['firstnumber'])) {
echo 'First Number: ' . roll() . '<form method="post"><input type="submit" value="Draw second number" name="secondnumber"></form>';
}
if (isset($_POST['secondnumber'])) {
$secondNumber = roll();
}
}
?>
<form method="post">
<input type="submit" value="Draw first number" name="firstnumber">
</form>
推荐阅读
- reactjs - 使用 this.props.Navigation.navigate 发送数据时出错本机反应
- c - 如何在用户空间程序和Linux内核模块之间进行通信以打印从用户程序发送到内核的消息
- python - 0. 在 Python 中是什么意思?
- python - Pyinstaller exe文件不接受任何输入
- entity-framework-core - Entity Framework Core - 迁移从模型创建所有属性,而不是所需的
- c - 从二进制文件读取 C 编程
- php - Laravel retrieve data with condition from many-to-many condition
- python - 在 python 中绘制 x_n = A**n * x0
- mysql - 最大和计数连接 n 到 n 个表
- startup - 启动时的 Ngrok