升级到PHP7.3破坏了以前工作的代码,如何解决



我的WordPress网站运行良好,直到PHP更新,我没有更新在线网站的版本,但我在本地服务器上进行实验的网站检测到了以下问题。

出现的消息是:

"警告:array_merge((:参数#19不是C:….php中1004行的数组">

这似乎发生在array_merge函数中。

<?php
$resume = get_posts(
array(
'post_type' => array('post', 'events'),
'numberposts' => -1,
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'custom_filter',
),
array(
'key' => 'location_latitude',
),
),
)
);
foreach ($resume as $post) {
$meta[] = get_post_meta($post->ID, 'custom_category', true);
}
$oneDimensionalArray = call_user_func_array('array_merge', $meta); // Problem - line 1004 // 
$unique = array_unique($oneDimensionalArray);
for ($i = 0; $i < (is_array($oneDimensionalArray) ? count($oneDimensionalArray) : 0); $i++) {
if (!in_array($oneDimensionalArray[$i], $unique)) {
$unique[] = $oneDimensionalArray[$i];
}
}
sort($unique);  /* Sort array by value alphabetically */
foreach ($unique as $value) {
$resume2 = get_posts(
array(
'post_type' => array('post', 'estabelecimentos', 'eventos', 'parceiros', 'noticias'),
'numberposts' => -1,
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'custom_category',
'value' => $value,
'compare' => 'LIKE',
),
array(
'key' => 'location_latitude',
),
),
)
);
$count = count($resume2);
?>
<label title="<?php echo $value; ?>&nbsp;(<?php echo $count; ?>)"><input type="checkbox" class="chkbox"
       data-value="<?php echo $value; ?>"
       name="category[]"
       value="<?php echo $value; ?>"><?php echo $value; ?>
<span>&nbsp;(<?php echo $count; ?>)</span></input></label>
<?php } ?>

您以前使用的PHP版本是什么?

我知道这个答案不能解决问题,但也许它会对你有所帮助。

如果你可以在你的代码程序中使用xdebug(我在PHPstorm中使用它(,你可以在代码中添加断点,然后一步一步地查看会发生什么。

也许你也可以添加

vardump($meta);
exit;

查看$meta到底包含什么。在此之前,还要尝试转储和退出其他变量。

也许您也可以尝试在合并函数之前设置$oneDimensionalArray = [];