我有 2 个 php 文件。
索引.php:
<?php
$counter = 0;
require_once('temp.php');
temp();
echo $counter;
?>
温度.php:
<?php
function temp() {
tempHelper();
}
function tempHelper() {
$counter++;
}
?>
我想打印 1 而不是 0。我试图$counter设置为全局变量,但没有成功。
我能做什么?
您的tempHelper
函数正在递增局部$counter
变量,而不是全局变量。您必须通过两个函数通过引用传入变量,或者使用全局变量:
function tempHelper() {
global $counter;
$counter++;
}
请注意,对全局变量的依赖可能表示应用程序中存在设计缺陷。
我建议不要使用全局变量。为计数器使用类可能会更好。
class Counter {
public $counter;
public function __construct($initial=0) {
$this->counter = $initial;
}
public function increment() {
$this->counter++;
}
}
或者只是使用没有函数的变量。您的函数似乎是多余的,因为键入$counter++
就像键入函数名称一样容易。
我想这应该有效:
<?php
$counter = 0;
function temp() {
// global $counter; [edited, no need for that line]
tempHelper();
}
function tempHelper() {
global $counter;
$counter++;
}
temp();
echo $counter;
?>
或者,您可以将变量作为参数传递,或从该函数返回新值。
更多信息请访问 http://www.simplemachines.org/community/index.php?topic=1602.0