在一个类中,我有两个关联数组。我正在尝试调用一个数组中的元素,以便在另一个(主)数组中使用。
我想问以下是可以做还是不能做,或者我做错了什么;
请注意,数组只是示例。
class ProductData {
private $texture = [0=>'Cream', 1=>'Powder', 2=>'Liquid', 3=>'Paste', 4=>'Solid'];
private $food = ['type'=>'Pasta', 'info'=>[1=>'750gm', 2=>'$4.50', 3=>$this->texture[4]],
'type'=>'Soup', 'info'=>[1=>'500ml', 2=>'$7.60', 3=>$this->texture[2]]];
// Constructor, Function(s) to access the $food array...
}
我发现这是不可能的。我收到一个语法错误;
- 意外的语法错误"$this"(T_VARIABLE)
如果我用$texture替换$this,我会收到同样的错误;
- 语法错误意外的"$texture"(T_VARIABLE)
我认为这是不可能的,或者我做错了什么,或者两者兼而有之。
如果能够做到这一点,我们将非常感谢任何援助。
谢谢,njc
class ProductData {
private $texture;
private $food;
function __construct(){
$this->texture = [0=>'Cream', 1=>'Powder', 2=>'Liquid', 3=>'Paste', 4=>'Solid'];
$this->food = ['type'=>'Pasta', 'info'=>[1=>'750gm', 2=>'$4.50', 3=>$this->texture[4]],
'type'=>'Soup', 'info'=>[1=>'500ml', 2=>'$7.60', 3=>$this->texture[2]]];
//other construct stuff
}
}
只能使用常数值在类方法之外定义属性值。因此,在您的情况下,不能使用$this
变量,因为它引用了当前对象实例。
您应该将初始化移动到__construct
(这实际上是用于的)
查看文档:
此声明可能包括初始化,但此初始化必须是一个常数值——也就是说,它必须能够在编译时进行求值,并且必须不依赖于运行时信息才能进行求值。