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 存在于用户浏览器中时存在。
希望对您有所帮助!
我想知道是否存在解决方案:
我需要在所有情况下使用算术运算,并在最后显示最后的结果。
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 存在于用户浏览器中时存在。
希望对您有所帮助!