in_array不适用于类常量

时间:2014-11-05 14:22:44

标签: php arrays class constants

我在使用新引入的数组类常量时遇到了in_array的问题。当我将包含数组的类常量放入函数时,我得到一个警告:

Warning: in_array() expects parameter 2 to be array, unknown given in...

代码:

foreach ($fields as $key => $value) {
    if (in_array($key, self::FIELDS)) $this->$key = $value;
}

常数(在课堂内):

const FIELDS = [
    self::FIELD_ID,
    self::FIELD_STREET,
    self::FIELD_HOUSE_NR,
    self::FIELD_POSTCODE,
    self::FIELD_CITY,
    self::FIELD_PERSONAL_NUMBER,
    self::FIELD_SELLER_NAME,
    'empty'
];

这个问题最奇怪的部分是它可以在我的本地机器上运行,没有任何运行PHP 5.6.2的错误/警告(Mac),但在我的服务器上也没有运行PHP 5.6.2。

如何解决此错误? (我不想使用静态数组...)

2 个答案:

答案 0 :(得分:0)

根问题是类常量不能是数组(除非是bluefirex指出的php 5.6或更高版本)。 PHP Constants Containing Arrays? http://php.net/manual/en/language.oop5.constants.php

答案 1 :(得分:0)

在 PHP 7.2 和 in_array 返回 FALSE 和类常量数组,至少在我的情况下...

我用它作为解决方法:

if(isset(self::MAPPING_OLD_REFS[$sku]))  $sku = self::MAPPING_OLD_REFS[$sku];