2014-02-26 42 views
0

我想访问不我类内部存在一个数组,好像我能似乎做吧,这里有一个例子:访问数组不是内部类

$chiInfo = 
      array(
       array("Home", "#"), 
       array("Test", "#"), 
      ); 


    class chiBar { 

     var $chiDet; 
     function __construct($chiName) 
     { 
      $this->chiDet = $chiName; 
     } 

     function getArrayData($array, $arrayNumber, $arrayType, &$result) // $arrayType : 1 - Non-multi, 2 - Multi 
     { 
      if(!is_array($array)) 
       return 0; 

      if($arrayType == 1) 
       return 0; 
      else 
      { 
       if($arrayNumber > sizeof($array)-1) 
       { 
        print("Invalid array number!"); 
        return 0; 
       } 

       $result = array(strval($array[$arrayNumber][0]), strval($array[$arrayNumber][1])); 
      } 

     } 

     function addToHeader($array, $addName, $addLink) 
     { 
      array_push($chiInfo, array($addName, $addLink)); // That is the link 

      echo "<META HTTP-EQUIV='refresh' CONTENT='15; URL=index.php'>"; 
     } 
    } 

每当我做不同的代码段,它似乎是该阵列中没有找到,错误:

Warning: array_push() expects parameter 1 to be array, null given in C:\xampp\htdocs\NewTest\navClass.php on line 40 

回答

1

只是传递数组作为参数的方法:

function addToHeader($chiInfo, $array, $addName, $addLink) 

然后当你怎么称呼它:

$chiBar = new chiBar($chiName); 
$chiBar->addToHeader($chiInfo, $array, $addName, $addLink); 
+0

从理论上讲,他也可以在全球范围定义吧'全球$ chiInfo;',不过很明显,你的路是更好和更受欢迎的方法 – Magictallguy

0

如果你想从一个函数或类方法中你的“顶级”代码访问变量直接,您必须声明变量全局函数内部或方法。

E.g.

... 

     function addToHeader($array, $addName, $addLink) 
     { 
      global $chiInfo; 
      array_push($chiInfo, array($addName, $addLink)); // That is the link 

      echo "<META HTTP-EQUIV='refresh' CONTENT='15; URL=index.php'>"; 
     } 
... 

但是,您可以考虑增加一个额外的参数,以你的方法,而不是作为全局可以获得在某些情况下非常棘手。您可以了解这里使用全局变量更多:使用参数,而不是http://php.net/manual/en/language.variables.scope.php

同样的方法:

... 
// note the ampersand on the parameter because you seem to want to change the original variable, not just a copy of it 
     function addToHeader($array, $addName, $addLink, &$chiInfo) 
     { 
      array_push($chiInfo, array($addName, $addLink)); // That is the link 

      echo "<META HTTP-EQUIV='refresh' CONTENT='15; URL=index.php'>"; 
     } 
...