我想访问我的类中不存在的数组,似乎我似乎可以这样做,这是一个例子:
$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
答案 0 :(得分:1)
只需将该数组作为参数传递给方法:
function addToHeader($chiInfo, $array, $addName, $addLink)
然后当你打电话时:
$chiBar = new chiBar($chiName);
$chiBar->addToHeader($chiInfo, $array, $addName, $addLink);
答案 1 :(得分:0)
如果您想从函数或类方法中的“顶级”代码中直接访问变量 ,则必须在函数或方法中声明变量global。
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'>";
}
...