PHP 7.2的可数问题

时间:2019-03-13 16:00:02

标签: php count

我有一个客户多年来一直依赖WP插件,而该插件几年前被作者放弃了。我已经能够进行一些修复以使其能够升级到PHP 7.2,但这使我感到困惑。我研究得越多,就越不了解如何解决它。

以下警告:

  

警告:count():参数必须是第311行的/app/public/wp-content/plugins/ozh-admin-drop-down-menu/inc/core.php中实现Countable的数组或对象(下面的第一行是311

if (!count($wp_ozh_adminmenu)) {
    $wp_ozh_adminmenu = (array)get_option('ozh_adminmenu');
    unset($wp_ozh_adminmenu[0]);
}

1 个答案:

答案 0 :(得分:2)

在PHP 7.2之前,当将非数组传递给count()时,它返回1。
现在,您可以在breaking changes中看到,count()在给它一个非数组时会发出警告。

一个简单的解决方法是在使用它之前检查它是否为数组。例如,如果要允许数组和字符串,则可能需要更多检查。

<?php
if (!is_array($wp_ozh_adminmenu) || !count($wp_ozh_adminmenu)) {
    $wp_ozh_adminmenu = (array)get_option('ozh_adminmenu');
    unset($wp_ozh_adminmenu[0]);
}