得到非常恼人的错误:“致命错误:不能将字符串偏移用作...中的数组”

时间:2011-03-21 18:21:44

标签: php arrays string

我如何摆脱这个错误?

代码:

        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 个答案:

答案 0 :(得分:1)

只有三种可能性$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']并不总是像你期望的那样。