Your problem is in reference to this change in php.
Non-numeric string offsets - e.g. $a['foo'] where $a is a string - now return false on isset() and true on empty(), and produce a E_WARNING if you try to use them. Offsets of types double, bool and null produce a E_NOTICE. Numeric strings (e.g. $a['2']) still work as before. Note that offsets like '12.3' and '5 foobar' are considered non-numeric and produce a E_WARNING, but are converted to 12 and 5 respectively, for backward compatibility reasons. Note: Following code returns different result. $str='abc';var_dump(isset($str['x'])); // false for PHP 5.4 or later, but true for 5.3 or less
http://us1.php.net/manual/en/migrati...compatible.php
I could be more helpful if I knew where your code was derived from. I troubleshoot this type of problem by using zend/xdebug and var_dump the variables that are in play. Most likely a non-numeric number is being used as an offset. Anyway just my guess