我每次调用函数时都试图将数字加1,但由于某种原因,总数总是相同的。
这是我目前的代码:
<?php
$total;
function draw_card() {
global $total;
$total=$total+1;
echo $total;
}
draw_card();
draw_card();
?>
答案 0 :(得分:1)
就个人而言,我不会使用全局变量,但如果我在枪口下被强制执行,我将处理函数中的状态,因此外部变量不会污染该值。我还会制作一个任意的长键名,我不会在其他地方使用。
<?php
function draw_card($initial = 0) {
$GLOBALS['draw_card_total'] = (
isset($GLOBALS['draw_card_total']) ? $GLOBALS['draw_card_total']+1 : $initial
);
return $GLOBALS['draw_card_total'];
}
// optionally set your start value
echo draw_card(1); // 1
echo draw_card(); // 2
但是我更倾向于选择一个默认保持状态的类,加上它更详细的发生。
<?php
class cards {
public $total = 0;
public function __construct($initial = 0)
{
$this->total = $initial;
}
public function draw()
{
return ++$this->total;
}
public function getTotal()
{
return $this->total;
}
}
$cards = new cards();
echo $cards->draw(); // 1
echo $cards->draw(); // 2
echo $cards->getTotal(); // 2
答案 1 :(得分:0)
由于它已经是全局的,你可以在函数之外使用它。
<?php
$total;
function draw_card() {
global $total;
$total=$total+1;
//echo $total;
}
draw_card();
draw_card();
draw_card();
echo "Current Count :", $total;
?>
结果: 当前数量:3
这将增加调用该函数的次数。
由于您每次都没有分隔符回显结果/总计,您可能认为输出为12
(假设)
答案 2 :(得分:-1)
函数有一个范围..你只需要将$ total带入函数的范围内......最好不要全局但作为参数。
$total = 0;
function draw_card($total) {
return $total + 1;
}
$total = draw_card($total);
//Expected Output = 1
$total = draw_card($total);
//Expected Output = 2