为什么在下面的代码中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
答案 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);
}
}
?>
希望这会有所帮助!