PHP错误:警告:字符串偏移量非法“额定值”

时间:2018-12-18 21:25:46

标签: php wordpress

我刚刚在wordpress网站上安装了stamped.io插件以供客户评论,并且在前端,我在/ plugins / stampedio-product-reviews / view / cls_stamped_io_public中收到错误“警告:非法字符串偏移量”评级。第29行的php'

然后我深入研究文件,这是第29行(实际上是带有if语句的行)中的代码:

if ($agrr_review["rating"] != "0" && $agrr_review["rating"] != 0){

$markup['aggregateRating'] = array('@type' => 'AggregateRating',

'ratingValue' => $agrr_review["rating"],

'ratingCount' => $agrr_review["count"],

'reviewCount' => $agrr_review["count"],

'worstRating' => 1,

'bestRating' => 5,

);

这只是一个警告错误,所以我只想关闭它。任何帮助

2 个答案:

答案 0 :(得分:1)

此错误是因为$ agrr_review是数组的其他内容 例子

 $agrr_review="";
    if ( $agrr_review["rating"] != "0" && $agrr_review["rating"] != 0){
    } 

那么您将获得

  

警告:字符串偏移量“分级”非法

因此要“关闭”,您可以执行以下操作:

$agrr_review="";
if (is_array($agrr_review) && $agrr_review["rating"] != "0" && $agrr_review["rating"] != 0){
}

但是如果数组中没有'rating',您仍然会收到错误消息:

  

未定义索引:评分

所以您需要另一个条件:

if (is_array($agrr_review) && isset($agrr_review["rating"])&& $agrr_review["rating"] != "0" && $agrr_review["rating"] != 0){
    }

答案 1 :(得分:1)

由于$agrr_review["rating"] != "0" && $agrr_review["rating"] != 0为真,因此条件"0" == 0是多余的。同样是:"" == 0,但不是"" == "0"

但是,由于在这种情况下,使用空字符串进行计算是没有意义的,因此您可以将条件简化为:

if (!empty($agrr_review['rating']))
对于任何计算结果为empty的表达式,

truefalse,包括空字符串"",值0,字符串{{1} }和未设置的变量。它不会发出警告。