【问题标题】:Php Array Elements Referenced From Another Array Inside a Class从类中的另一个数组引用的 Php 数组元素
【发布时间】:2013-11-27 22:05:10
【问题描述】:

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

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

请注意,数组是示例。

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)。

我认为这是不可能的,或者我做错了什么,或者两者兼而有之。

如果可以做到,非常感谢任何帮助。

谢谢, 新泽西州

【问题讨论】:

    标签: php arrays class reference elements


    【解决方案1】:
    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
    
    }
    

    }

    【讨论】:

    • 非常感谢您。我很想投票给你的答案,但系统刚刚通知我没有这样做的声望点。 +1 给你。
    【解决方案2】:

    您只能使用常量值来定义类方法之外的属性值。因此,在您的情况下,您不能使用 $this 变量,因为它引用了当前对象实例。

    您应该将初始化移动到__construct(这确实是为了)

    查看documentation

    这个声明可以包含一个初始化,但是这个初始化必须是一个常数值——也就是说,它必须能够在编译时被评估,并且不能依赖于运行时信息要评估的顺序。

    【讨论】:

      猜你喜欢
      • 2018-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多