PHP全局变量修饰符不起作用

时间:2011-03-30 03:07:21

标签: php function variables null global

我的index.php中包含一个文件(color.php)。在包含的文件中,我定义了一些变量和函数。

(color.php)

<?php
  $colors = array(0xffffff, 0x000000, 0x000000, 0x808080);
  function getColors() {
     global $colors;
     return $colors;
  }
?>

下面是我的主文件(index.php)。

<?php
      require_once('color.php');
      class Test {
           function Test() {
               var_dump(getColors()); // returns NULL
           }
      }
?>

为什么调用getColors()函数,它返回NULL,据说会返回一个颜色数组?我错过了什么吗?或者php.ini中是否需要配置?任何帮助将非常感激。谢谢!

4 个答案:

答案 0 :(得分:1)

这对我来说很好用:

<?php
$colors = array(0xffffff, 0x000000, 0x000000, 0x808080);
function getColors() {
    global $colors;
    return $colors;
}
class Test {
    function Test() {
        var_dump(getColors());
    }
}
$st = new Test();
$st->Test();
?>

答案 1 :(得分:0)

function getColors() {
   return array(0xffffff, 0x000000, 0x000000, 0x808080);
}

至于为什么它会返回NULL,必须有一个很好的解释。

也许你在某处打电话给unset($colors)

答案 2 :(得分:0)

这对我有用。我不确定你是在创建一个对Test类的新引用还是调用该方法,但这很有效。

  $colors = array(0xffffff, 0x000000, 0x000000, 0x808080);
  function getColors() {
     global $colors;
     return $colors;
  }
      class Test {
           function __construct() {
              if (getColors() == NULL) {
                echo "null";// returns NULL
              } else {
                print_r(getColors());
              }
           }
      }

  $test = new Test();

答案 3 :(得分:0)

实际上,我已经弄明白是什么导致了这个错误。我将文件包含在主类的一个函数中,所以语句

global $colors; 
包含文件中的函数getColors()的

返回NULL,因为$ colors未在主类外定义。我在这里发布的代码只是我遇到麻烦的实际代码的虚拟表示。当我发布它时,我没想到这个。我的错。无论如何,这现在已经解决了。谢谢你们的回答。直到下一次。 :)