получаю действительно раздражающую ошибку: «Неустранимая ошибка: невозможно использовать смещение строки как массив в ...» - PullRequest
0 голосов
/ 21 марта 2011

Как мне избавиться от этой ошибки?

код:

        function get_green_entities($c,$array){
            $thisC = &$this->output[$this->sessID];    
            $timeDif = 4;
            $cols = count($thisC['clientCols'])+1;
            if(!isset($array['Entity ID'])){
                return get_grey($c);
            }
            if(!isset($thisC['CURRTIME'][$array['Entity ID']])){
                $thisC['CURRTIME'][$array['Entity ID']] = 
                      (isset($array['timestamp'])?$array['timestamp']:null);
            }
        }

Я нажимаю эту ошибку в последней строке оператора if:

$thisC['CURRTIME'][$array['Entity ID']] = 
                          (isset($array['timestamp'])?$array['timestamp']:null);

И я знаю, что $array['Entity ID']=4

Как мне это исправить?

Спасибо: -)

ОБНОВЛЕНИЕ 3
Я удалил дампы, так как они немного чувствительны

1 Ответ

1 голос
/ 21 марта 2011

Есть только три варианта: $thisC, $thisC['CURRTIME'] или $array - это не массив ...

Вы можете изменить сигнатуру функции для защиты от последней:

function get_green_entities($c, array $array)

Если проблема вызвана $array, она будет вызвана при вызове функции. Так что теперь, если проблема сохраняется, вы знаете, что это как-то связано с $thisC.

Вызов var_dump на линии перед ошибкой должен прояснить, в чем проблема.

Рассмотрим поведение:

$array = 'test';

if (!isset($array['foo']['bar']))
  $array['foo']['bar'] = true; // error is triggered here

Так что я думаю, проблема в том, что $thisC['CURRTIME'] не всегда массив, как вы ожидаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...