Php从类内的另一个数组引用的数组元素


Php Array Elements Referenced From Another Array Inside a Class

在一个类中,我有两个关联数组。我正在尝试调用一个数组中的元素,以便在另一个(主)数组中使用。

我想问以下是可以做还是不能做,或者我做错了什么;

请注意,数组只是示例。

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(这实际上是用于的)

查看文档:

此声明可能包括初始化,但此初始化必须是一个常数值——也就是说,它必须能够在编译时进行求值,并且必须不依赖于运行时信息才能进行求值。