我有2个php文件。
的index.php:
<?php
$counter = 0;
require_once('temp.php');
temp();
echo $counter;
?>
temp.php:
<?php
function temp() {
tempHelper();
}
function tempHelper() {
$counter++;
}
?>
我想打印1而不是0。 我试图将$ counter设置为全局变量而没有成功。
我该怎么办?
答案 0 :(得分:2)
您的tempHelper
函数正在递增本地$counter
变量,而不是全局变量。您必须通过两个函数通过引用传递变量,或使用全局变量:
function tempHelper() {
global $counter;
$counter++;
}
请注意,对全局变量的依赖可能表明您的应用程序存在设计缺陷。
答案 1 :(得分:1)
我建议不要使用全局变量。使用计数器的课程可能会更好。
class Counter {
public $counter;
public function __construct($initial=0) {
$this->counter = $initial;
}
public function increment() {
$this->counter++;
}
}
或者只使用没有函数的变量。您的函数似乎是多余的,因为键入$counter++
和函数名称一样容易。
答案 2 :(得分:0)
我认为这应该有效:
<?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
的更多信息