簡體   English   中英

in_array 不適用於類常量

[英]in_array does not work with 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 時卻沒有。

如何解決此錯誤? (我不想使用靜態數組...)

根本問題是類常量不能是數組(除非 bluefirex 指出它是 php 5.6 或更高版本)。 PHP 常量包含數組? http://php.net/manual/en/language.oop5.constants.php

在 PHP 7.2 和 in_array 返回FALSE和類常量數組,至少在我的情況下......

我用它作為解決方法:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM