我刚刚在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,
);
这只是一个警告错误,所以我只想关闭它。任何帮助
答案 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
的表达式, true
为false
,包括空字符串""
,值0
,字符串{{1} }和未设置的变量。它不会发出警告。