我得到一个奇怪的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并重新设置错误级别。


当前回答

为PHP

//Setup Array like so
$memcachedConfig = array(
  "host" => "127.0.0.1",
  "port" => "11211"
);

//Always a good practice to check if empty

if(isset($memcachedConfig['host']) && isset($memcachedConfig['port'])){

    //Some codes

    print_r ($memcachedConfig['host']);
    print_r ($memcachedConfig['port']);

}

只要确保返回的值不为空。 这个例子是PHP的看看如何在其他语言中检查数组是否为空。

其他回答

从PHP 5.4开始,我们需要传递与函数预期相同的数据类型值。例如:

function testimonial($id); // This function expects $id as an integer

当调用这个函数时,如果一个字符串值是这样提供的:

$id = $array['id']; // $id is of string type
testimonial($id); // illegal offset warning

这将生成一个非法偏移警告,因为数据类型不匹配。为了解决这个问题,你可以使用settype:

$id = settype($array['id'],"integer"); // $id now contains an integer instead of a string
testimonial($id); // now running smoothly

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

让我们试试

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

我希望这对你有所帮助。

只是以防它帮助任何人,我得到这个错误,因为我忘记反序列化一个序列化的数组。如果这适用于你的情况,我肯定会检查一下。

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

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

在我的情况下,我解决了它,当我改变函数,做sql查询 返回json_encode($array) 然后:返回$array