首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PHP类中使用其他数组初始化数组时出错

在PHP类中使用其他数组初始化数组时出错
EN

Stack Overflow用户
提问于 2011-07-22 16:16:31
回答 3查看 191关注 0票数 0

我尝试在php类中使用另一个数组来初始化一个数组。代码如下:

代码语言:javascript
复制
 <?php class test
{
    var $nodeDomain = array
        ("gd88" =>"10.10.104.88", "gd02" =>"10.10.104.2");
    var $node = array
        ("x86-mysql" =>$nodeDomain['gd88'],
         "x86-hbase" =>$nodeDomain['gd02']);

    function show ()
    {
        print_r($node);
    }
}
?>

我在第6行的/root/workspace/php/array.php中收到以下错误:解析错误:语法错误,意外的T_VARIABLE

但是,当我不使用class运行代码时,它工作得很好。我的意思是我运行以下代码:

代码语言:javascript
复制
var $nodeDomain = array
    ("gd88" =>"10.10.104.88", "gd02" =>"10.10.104.2");
var $node = array
    ("x86-mysql" =>$nodeDomain['gd88'],
     "x86-hbase" =>$nodeDomain['gd02']); 

我不太清楚php类和php脚本的区别。有人能解释这个吗?

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2011-07-22 16:21:59

声明类成员时不能使用其他变量。尝试在构造函数中初始化它们。

代码语言:javascript
复制
<?php class test
{
    var $nodeDomain;
    var $node;

    public function __construct() {
       $this->nodeDomain = array("gd88" =>"10.10.104.88", "gd02" =>"10.10.104.2"); 
       $this->node = array("x86-mysql" =>$this->nodeDomain['gd88'],
         "x86-hbase" =>$this->nodeDomain['gd02']);
    }
    function show ()
    {
        print_r($node);
    }
}
?>
票数 2
EN

Stack Overflow用户

发布于 2011-07-22 16:20:58

尝试将这些数组初始化放到测试类的constructor

票数 0
EN

Stack Overflow用户

发布于 2011-07-22 16:24:54

你不能在字段声明中引用变量。不管怎样,这个变量应该从哪里来?没有局部变量,也没有办法定位全局语句。(当然,超全局变量可以工作,但显然没有实现;-))相反,您可以这样做:

代码语言:javascript
复制
<?php class test
{
    var $nodeDomain = array
        ("gd88" =>"10.10.104.88", "gd02" =>"10.10.104.2");
    var $node;

    function __construct()
    {
      $this->node = array
        ("x86-mysql" =>$nodeDomain['gd88'],
         "x86-hbase" =>$nodeDomain['gd02']);
    }
    function show ()
    {
        print_r($node);
    }
}
?>

请注意,$nodeDomain必须以某种方式位于构造函数的作用域中。它是一个全局变量,因此您需要在赋值之前使用global $nodeDomain语句,或者您可以将$nodeDomain作为构造函数参数传递。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6787298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档