PHP 警告:内爆():传递的参数无效
PHP Warning: implode(): Invalid arguments passed
我每次访问我的 wordpress 网站时都会在 apache 日志中收到此警告:
[error] [client myiphere] PHP Warning: implode(): Invalid arguments passed in /var/www/mysitepath/wp-content/themes/mytheme/noscript/views/list-view.php on line 16, referer: http://www.example.com/
这是列表的一部分-view.php:
<?php
$mytheme = mytheme::getInstance();
$currentContentLayout = $mytheme->WPData['currentContentLayout'];
$contentLayout = $mytheme->settings->contentLayouts->{$currentContentLayout};
$headerClasses = array();
if('no' == $contentLayout->metaPosition){
$headerClasses = 'no-meta';
} else {
$headerClasses[] = 'meta-' . $contentLayout->metaPosition;
}
?>
<div class="mytheme-list-view row">
<div class="large-12 columns">
<?php while(have_posts()){ the_post();?>
<article id="post-<?php the_ID();?>" <?php post_class();?> data-mytheme-post-from-id="<?php the_ID();?>">
<header class="entry-header <?php echo implode(' ', $headerClasses);?>">
...
...
代码有问题吗?谢谢
您需要更改此行:
$headerClasses = 'no-meta';
为此:
$headerClasses[] = 'no-meta';
当 $headerClasses
是字符串时会出现问题,因为 implode()
将数组作为第二个参数。
implode
函数需要 array
作为参数,而在 if 条件下您传递的是简单的字符串。你应该这样使用
if('no' == $contentLayout->metaPosition){
$headerClasses[] = 'no-meta'; // this should be pass into array
} else {
$headerClasses[] = 'meta-' . $contentLayout->metaPosition;
}
第二个。你可以像这样检查 imload
<?php echo is_array($headerClasses)? implode(' ', $headerClasses):$headerClasses;?>
我每次访问我的 wordpress 网站时都会在 apache 日志中收到此警告:
[error] [client myiphere] PHP Warning: implode(): Invalid arguments passed in /var/www/mysitepath/wp-content/themes/mytheme/noscript/views/list-view.php on line 16, referer: http://www.example.com/
这是列表的一部分-view.php:
<?php
$mytheme = mytheme::getInstance();
$currentContentLayout = $mytheme->WPData['currentContentLayout'];
$contentLayout = $mytheme->settings->contentLayouts->{$currentContentLayout};
$headerClasses = array();
if('no' == $contentLayout->metaPosition){
$headerClasses = 'no-meta';
} else {
$headerClasses[] = 'meta-' . $contentLayout->metaPosition;
}
?>
<div class="mytheme-list-view row">
<div class="large-12 columns">
<?php while(have_posts()){ the_post();?>
<article id="post-<?php the_ID();?>" <?php post_class();?> data-mytheme-post-from-id="<?php the_ID();?>">
<header class="entry-header <?php echo implode(' ', $headerClasses);?>">
...
...
代码有问题吗?谢谢
您需要更改此行:
$headerClasses = 'no-meta';
为此:
$headerClasses[] = 'no-meta';
当 $headerClasses
是字符串时会出现问题,因为 implode()
将数组作为第二个参数。
implode
函数需要 array
作为参数,而在 if 条件下您传递的是简单的字符串。你应该这样使用
if('no' == $contentLayout->metaPosition){
$headerClasses[] = 'no-meta'; // this should be pass into array
} else {
$headerClasses[] = 'meta-' . $contentLayout->metaPosition;
}
第二个。你可以像这样检查 imload
<?php echo is_array($headerClasses)? implode(' ', $headerClasses):$headerClasses;?>