我正在研究另一个PHP版本。但是当我因不同的PHP版本将网站上传到客户端服务器时,我收到了这些错误
警告:非法字符串偏移'名称' /homepages/3/d227794433/htdocs/flyefg/wp-content/plugins/gameplan-shortcodes/shortcodes/testimonial.php 第53行
警告:非法字符串偏移'位置' /homepages/3/d227794433/htdocs/flyefg/wp-content/plugins/gameplan-shortcodes/shortcodes/testimonial.php 第53行
警告:非法字符串偏移'公司' /homepages/3/d227794433/htdocs/flyefg/wp-content/plugins/gameplan-shortcodes/shortcodes/testimonial.php 第53行
警告:非法字符串偏移'名称' /homepages/3/d227794433/htdocs/flyefg/wp-content/plugins/gameplan-shortcodes/shortcodes/testimonial.php 第53行
警告:非法字符串偏移'位置' /homepages/3/d227794433/htdocs/flyefg/wp-content/plugins/gameplan-shortcodes/shortcodes/testimonial.php 第53行
警告:非法字符串偏移'公司' /homepages/3/d227794433/htdocs/flyefg/wp-content/plugins/gameplan-shortcodes/shortcodes/testimonial.php 第53行
警告:非法字符串偏移'名称' /homepages/3/d227794433/htdocs/flyefg/wp-content/plugins/gameplan-shortcodes/shortcodes/testimonial.php 第53行
警告:非法字符串偏移'位置' /homepages/3/d227794433/htdocs/flyefg/wp-content/plugins/gameplan-shortcodes/shortcodes/testimonial.php 第53行
警告:非法字符串偏移'公司' /homepages/3/d227794433/htdocs/flyefg/wp-content/plugins/gameplan-shortcodes/shortcodes/testimonial.php 第53行
第53行的代码是
$output .= '<div class="name">'.$atts['name'].($atts['position']?', '.$atts['position']:'').($atts['company']?' - '.$atts['company']:'').'</div>';
整个代码是(第35-62行)
function parse_testimonial_item($atts, $content, $id){
$position = isset($atts['position']) ? $atts['position'] : '';
$name = isset($atts['name']) ? $atts['name'] : '';
$company = isset($atts['company']) ? $atts['company'] : '';
wp_enqueue_script( 'jquery-isotope');
global $testimonial_slides;
$output = '';
if($testimonial_slides > 1){
if(function_exists( 'head_slide' )){
$output .= head_slide($testimonial_slides, '', '', array('page'=>true));
}
}
$output .= '<div class="testimonial style-1">';
$output .= '<div class="tt-content icon-quote-right">';
$output .= strip_tags($content);
$output .= '<div class="tt-tooltip"><!----></div>';
$output .= '</div>';
$output .= '<div class="name">'.$atts['name'].($atts['position']?', '.$atts['position']:'').($atts['company']?' - '.$atts['company']:'').'</div>';
$output .= '</div>';
if($testimonial_slides > 1){
if(function_exists( 'footer_slide' )){
$output .= footer_slide(array('page'=>true));
}
}
return $output;
}
谢谢
答案 0 :(得分:4)
在函数的最开始,您正在检查这些值是否存在:
$position = isset($atts['position']) ? $atts['position'] : '';
$name = isset($atts['name']) ? $atts['name'] : '';
$company = isset($atts['company']) ? $atts['company'] : '';
因此,不要在代码中使用$atts[...]
,而应使用刚刚设置的变量。
另请注意,如果您立即正确设置值,则可以在以后删除三元表达式:
$name = isset($atts['name']) ? $atts['name'] : '';
$position = isset($atts['position']) ? (', ' . $atts['position']) : '';
$company = isset($atts['company']) ? (' - ' . $atts['company']) : '';
...
$output .= '<div class="name">'.$name.$position.company.'</div>';
答案 1 :(得分:3)
您的代码存在的问题是,虽然您过滤了$atts
中的值,但您并未重复使用这些变量。
您的代码应如下所示:
$output .= '<div class="name">'.$name.($position?', '.$position:'').($company?' - '.$company:'').'</div>';
而不是:
$output .= '<div class="name">'.$atts['name'].($atts['position']?', '.$atts['position']:'').($atts['company']?' - '.$atts['company']:'').'</div>';
答案 2 :(得分:-4)
数组变量$ atts不包含“名称,位置”等,这就是您收到此错误的原因。检查数组$ atts中的数据。只需用解决@ $ atts问题替换$ atts。