首页 > 解决方案 > 如何在不影响 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

解决方案


在文件的开头,您检查以下条件

   <?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>

推荐阅读