switch 语句中的算术运算

Arithmetic operation inside switch statement

我想知道是否存在解决方案:

我需要在所有情况下使用算术运算,并在最后显示最后的结果。

Functions.php

<?php
static $overall;

$overall = 0;

$action = $_GET['action'];

switch ($action) {

case 'result1':

$overall = $overall + 5;

break;

case 'result2':

$overall = $overall + 15;

break;

case 'result3':

$overall = $overall + 2;

break;

case 'finalresult':

echo $overall;

break;

}
?>

我通过 AJAX 调用所有案例,最后我想调用 'finalresult' 案例。

这个呢

     <?php

      static $overall; 

     $overall = 0; 

    $action = overallResult($_GET['action']);

    echo $action;

    public function overallResult($action)

    { 

   switch ($action) 

   {

   $overall = 0;

   case 'result1':

   $overall = $overall + 5;

   break; 

  case 'result2':

 $overall = $overall + 15;

 break;

 case 'result3':

 $overall = $overall + 2;

 break;

 case 'finalresult': 
 $overall = $overall;
 break;

 }
return $overall ;
    }

  ?>

当您将变量标记为静态时,您所做的是使其在 class 外部可用,而无需实例化 class。例如:

class Test {

static $someVariable = 0;

}

现在您可以像这样调用该变量:

echo Test::$someVariable;

如果创建 class 的实例并递增变量,然后在原始 class 上调用变量,它将保持为 0。像这样:

$instance = new Test();
$instance->someVariable++;

// This is now 1
echo $instance->someVariable;

// This remains 0
echo Test::$someVariable;

如果您有另一个未标记为静态的变量,则无法在不实例化的情况下从 class 外部调用它。例如:

class Test {

public $differentVariable = 3;

}

echo Test::$differentVariable;

这不会运行并报错。

这里的困惑在于如何使用静态,以及如何使程序中的数据持久化。

由于您在从另一个页面加载此脚本的网站上使用它,因此每次调用它时都是 运行 并且 $overall 重置为 0。如果您希望该数字是递增和持久化(即使在用户 returns 到另一个页面后仍保留其值),您有几个不错的选择。您可以了解和使用 $_SESSION。 (放置 session_start(); 在每个 PHP 页面上,您希望 $_SESSION 变量可用,然后像存储任何其他关联数组一样在其中存储信息)

您还可以学习如何使用 mysqli 或其他一些数据库接口。这完全取决于您的整体程序设计,因为数据库信息将永久保留或直到手动重置,并且 $_SESSION 数据将仅在 cookie 存在于用户浏览器中时存在。

希望对您有所帮助!