我尝试在php类中使用另一个数组来初始化一个数组。代码如下:
<?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运行代码时,它工作得很好。我的意思是我运行以下代码:
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脚本的区别。有人能解释这个吗?
谢谢。
发布于 2011-07-22 16:21:59
声明类成员时不能使用其他变量。尝试在构造函数中初始化它们。
<?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);
}
}
?>发布于 2011-07-22 16:20:58
尝试将这些数组初始化放到测试类的constructor中
发布于 2011-07-22 16:24:54
你不能在字段声明中引用变量。不管怎样,这个变量应该从哪里来?没有局部变量,也没有办法定位全局语句。(当然,超全局变量可以工作,但显然没有实现;-))相反,您可以这样做:
<?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作为构造函数参数传递。
https://stackoverflow.com/questions/6787298
复制相似问题