调试时出现了, 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造成的,希望以上方法对你有所帮助。