经检查是globals变量丢了,该怎么办?我的程序很简单,就是
file1.php
function test($a=20){
$globals[a]=$a;
?>
}
file2.php
include(file1.php)
test1.php
echo $a;//这里找不到值了
?>

解决方案 »

  1.   

    我还是不懂,是说这个么?$globals[a]=$a;其实原本的程序是大写的$GLOBALS["a"]=$a;只是发表时顺手写成小写的。
    file1.php
    function test($a=20){
    <?php
           $GLOBALS["a"]=$a;
    ?>
    }
    file2.php
    include(file1.php)
    test();
    echo $a;//这里找不到值了
    echo $GLOBALS["a"];//这个也没有值。
    ?>
      

  2.   

    和下面这段话有关系么?在 Zend 引擎 1 代,驱动了 PHP4,对于变量的 static 和 global 定义是以 references 的方式实现的。例如,在一个函数域内部用 global 语句导入的一个真正的全局变量实际上是建立了一个到全局变量的引用。这有可能导致预料之外的行为,如以下例子所演示的: 
    <?php
    function test_global_ref() {
    global $obj;
    $obj = &new stdclass;
    }function test_global_noref() {
    global $obj;
    $obj = new stdclass;
    }test_global_ref();
    var_dump($obj);
    test_global_noref();
    var_dump($obj);
    ?> 
    执行以上例子会导致如下输出: NULL
    object(stdClass)(0) {
    }
      

  3.   

    在加密的 optimizations 选项里选择 "None"试试看?