PHPcms在设置推荐的时候operator not supported for strings

这两天在使用PHPcms文章管理系统为公司做网站的时候,需要在首页添加同一栏目下两种不同的文章调用,我就想到了可以做一个文章推荐,但是在实际操作过程中服务器环境为Nginx+PHP7.2,在设置推荐的时候会报错,Fatal error: Uncaught Error: [] operator  not supported for strings in

/www/wwwroot/mfcwu.com/phpcms/modules/admin/classes/push_api.class.php:143 Stack trace: #0 大概意思就是出现一个致命的错误,这个错误在文件push_api.class.php的143行,[]这个是不支持字符串的运算符。

phpcms设置推荐operator not supported for strings

1
2
3
4
5
6
7
8
9
10
 foreach ($param as $d) {
$info['id'] = $info['listorder'] = $d['id'];
$info['catid'] = $catid;
$info['posid'] = $pid;
$info['module'] = $model == 'yp_content_model' ? 'yp' : 'content';
$info['modelid'] = $modelid;
$fields_arr = $fields_value = '';
foreach($fulltext_array AS $key=>$value){
$fields_arr[] = '{'.$key.'}';    //此处为143行代码  报错就是这两行
$fields_value[] = $d[$key]; //此处为144行代码  报错就是这两行

经过查找资料,导致这个错误的原因可能是$fields_arr和$fields_value变量最初的赋值是字符串,但是在下面使用的时候是作为数组,而在PHP7.X版本中没有将这两个变量自动转换为数组,依然作为字符串,”[]”只是作为了运算符,所以提示错误。

换而言之,在对$fields_arr和$fields_value这两个变量进行第二次赋值的时候,就是对同一变量进行第二次赋值的时候,值得类型不一致,就会报错。

最开始解决方案,我是直接将143和144行代码的”[]”删除了,测试添加推荐文章显示正常,但后来考虑到这种方法不是太严谨,于是使用了第二种方法。

1
2
$fields_arr[] = '{'.$key.'}'; //这是原来143行
$fields_value[] = $d[$key]; //这是原来144行

直接修改为

1
2
$fields_arr = '{'.$key.'}'; //直接去掉了[]
$fields_value = $d[$key]; //直接去掉了[]

就是在对变量进行第二次赋值的时候,先对变量进行一个类型转换,把变量从字符串转换成数组,因此我在push_api.class.php文件143行前面添加了str_split函数进行转换

1
2
3
4
$fields_arr=str_split($fields_arr); //将fields_arr转换为数组
$fields_value=str_split($fields_value); //将fields_value转换为数组
$fields_arr[] = '{'.$key.'}'; //这是原来143行
$fields_value[] = $d[$key]; //这是原来144行

修改完成后测试正常,暂时未发现其他问题,但不知道后面会不会有所影响!

修改完成显示正常

[the_ad id="426"]

 

喜欢这篇文章吗?按个赞吧,不会令你失望!

发表评论