致命错误:常量表达式包含PHP中的无效操作

时间:2019-12-04 17:22:07

标签: php oop

为什么在下面的代码中PHP会给我Fatal error: Constant expression contains invalid operations错误?

<?php
  class Merge{
  public $fname=["Peter","Ben","Joe"];
  public $age=["35","37","43"];
  public $c=array_combine($this->fname,$this->age);
}
?>

但是我没有得到下面给出的代码错误

<?php
  $fname=array("Peter","Ben","Joe");
  $age=array("35","37","43");
  $c=array_combine($fname,$age);
?>

请告诉我为什么会发生这种情况以及如何解决此问题?

**编辑:**
php -v

的输出
PHP 7.3.11-0ubuntu0.19.10.1 (cli) (built: Oct 24 2019 11:38:49) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.11, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.11-0ubuntu0.19.10.1, Copyright (c) 1999-2018, by Zend Technologies

1 个答案:

答案 0 :(得分:0)

当您初始化一个类对象时,您不能为其分配动态求值表达式,因此您不能为操作分配变量。

在后台发生的事情是该常量分配了一个内存插槽。它无法处理数据,因为它需要该值来确定数据分配到哪个插槽,因为这是在编译时发生的。

您可以这样做:

<?php
  class Merge{
  public $fname=["Peter","Ben","Joe"];
  public $age=["35","37","43"];
  public $c=null

     function __construct(){
       $this->c = array_combine($this->fname,$this->age);
     }

  }
?>

希望这会有所帮助!