我得到一个奇怪的PHP错误后更新我的PHP版本到5.4.0-3。

我有这样一个数组:

Array
(
    [host] => 127.0.0.1
    [port] => 11211
)

当我试图像这样访问它时,我会得到奇怪的警告

 print $memcachedConfig['host'];
 print $memcachedConfig['port'];


 Warning: Illegal string offset 'host' in ....
 Warning: Illegal string offset 'port' in ...

我真的不想只是编辑我的php.ini并重新设置错误级别。


当前回答

只使用

$memcachedConfig = array();

之前

 print $memcachedConfig['host'];
 print $memcachedConfig['port'];


 Warning: Illegal string offset 'host' in ....
 Warning: Illegal string offset 'port' in ....

这是因为你从来没有定义什么是$memcachedConfig,所以默认情况下处理字符串而不是数组。

其他回答

在我的情况下:在获取数据库记录时,确保使用 result_array ();而不是row();或row_array ();

这个问题有点晚了,但对于其他正在搜索的人来说:我通过使用错误的值(类型)初始化得到了这个错误:

$varName = '';
$varName["x"] = "test"; // causes: Illegal string offset

正确的做法是:

 $varName = array();
 $varName["x"] = "test"; // works

这是一个旧的,但如果有人能从中受益。 如果数组为空,也会得到这个错误。

在我的情况下,我有:

$buyers_array = array();
$buyers_array = tep_get_buyers_info($this_buyer_id); // returns an array
...
echo $buyers_array['firstname'] . ' ' . $buyers_array['lastname']; 

我改为:

$buyers_array = array();
$buyers_array = tep_get_buyers_info($this_buyer_id); // returns an array
...
if(is_array($buyers_array)) {
   echo $buyers_array['firstname'] . ' ' . $buyers_array['lastname']; 
} else {
   echo 'Buyers id ' . $this_buyer_id . ' not found';
}

在检查数组之前,请执行以下操作:

if(!is_array($memcachedConfig))
     $memcachedConfig = array();

我通过使用trim()函数解决了这个问题。问题在于空间。

让我们试试

$unit_size = []; //please declare the variable type 
$unit_size = exolode("x", $unit_size);
$width  = trim ($unit_size[1] );
$height = trim ($unit_size[2] );

我希望这对你有所帮助。