2014-11-05 3 views
-1

У меня проблема с in_array с использованием новых введенных констант класса массива. Когда я ставлю класс постоянный, который содержит массив в функцию я получаю предупреждение: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; 
} 

Constant (внутри класса):

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' 
]; 

Странная часть этой проблемы заключается в том, что она работает на моей локальной машине без каких-либо ошибок/предупреждений (Mac), работающих на P HP 5.6.2, но на моем сервере также не работает PHP 5.6.2.

Как устранить эту ошибку? (Я не хочу использовать статические массивы ...)

+0

что само :: ПЛОЩАДКА –

+0

Очевидно само :: FIELDS не то, что вы думаете, должно быть, вы можете сбросить его? –

+0

На моей локальной машине self :: FIELDS - это массив, содержащий 8 строк (как и должно быть). На моем сервере это «НЕИЗВЕСТНО: 0». –

ответ

0

Проблема с корнем - это константы класса, которые не могут быть массивами (если только это не php 5.6 или выше, как указано в bluefirex). PHP Constants Containing Arrays? http://php.net/manual/en/language.oop5.constants.php

+0

Конечно! С PHP 5.6 это особенность. Он работает на моей локальной машине, как и ожидалось, - просто не на сервере. –

Смежные вопросы