调试时出现了, Warning:Illegal string offset提示,为了让主题更好的运行在Php7环境中,该问题貌似只出现于PHP5.4以上环境。


$catlist = array_merge(cat_list(0, 0, false), array('-'), article_cat_list(0, 0, false));

    foreach($catlist as $key => $val)
    {
       echo  $val["cat_name"];

   }

上面代码可以输出值,但是报错Warning: Illegal string offset 'cat_name' in ,原因是$catlist数组里面有空数组,空数组里没有cat_name这个字段。最终解决办法是在 foreach 下面加个判断 if(is_array($val)),这样就搞定了。



1、缺少 isset 而出现警告。当访问未定义变量时,PHP 会产生警告;
用 empty() 或者 isset() 判断变量是否定义


2、在php文件首行加入error_reporting(0);
1、在PHP手册中搜索到函数error_reporting(0);官方解释是Turn off all error reporting,于是把error_reporting(0);加到PHP程序的首行,运行后果然没出现任何错误提示!

2、在php文件的首行加入error_reporting(E_ALL ^ E_NOTICE);,毕竟不能因为一个错误关闭所有的错误警告。

3、有关error_reporting()函数:
error_reporting(0);//禁用错误报告
error_reporting(E_ALL ^ E_NOTICE);//显示除去 E_NOTICE 之外的所有错误信息
error_reporting(E_ALL^E_WARNING^E_NOTICE);//显示除去E_WARNING E_NOTICE 之外的所有错误信息
error_reporting(E_ERROR | E_WARNING | E_PARSE);//显示运行时错误,与error_reporting(E_ALL ^ E_NOTICE);效果相同。error_reporting(E_ALL);//显示所有错误

以上问题应当是把我们的Php升级大于5.4造成的,希望以上方法对你有所帮助。