PHP7.2的可数问题
我有一个多年来一直依赖WP插件的客户机,几年前作者放弃了它。我已经能够做一些修复,使其与升级到PHP7.2一起工作,但这一个让我困惑。我越是研究它,我就越不了解如何修复它 警告如下: 警告:count():参数必须是在第311行的/app/public/wp content/plugins/ozh admin下拉菜单/inc/core.php中实现可计数的数组或对象(下面第一行是311)PHP7.2的可数问题,php,count,Php,Count,我有一个多年来一直依赖WP插件的客户机,几年前作者放弃了它。我已经能够做一些修复,使其与升级到PHP7.2一起工作,但这一个让我困惑。我越是研究它,我就越不了解如何修复它 警告如下: 警告:count():参数必须是在第311行的/app/public/wp content/plugins/ozh admin下拉菜单/inc/core.php中实现可计数的数组或对象(下面第一行是311) 在PHP7.2之前,当将非数组传递给count()时,它返回1。 现在,正如您在中所看到的,count()在
在PHP7.2之前,当将非数组传递给
count()
时,它返回1。现在,正如您在中所看到的,
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]);
}
PHP7.2之前的
将非数组传递给count()
时,返回1。
现在,正如您在中所看到的,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]);
}
是一个数组吗?你能确定吗?$wp\u ozh\u adminmenu
的值是多少?我猜是一根绳子。像…这样的考试怎么样<代码>如果(!is_array($wp_ozh_adminmenu)| count($wp_ozh_adminmenu)==0)
我不确定,但只是将上面的代码包装进去:如果(!is_array($wp_ozh_adminmenu)| count($wp_ozh adminmenu)==0){}这没有帮助。是数组吗?你能确定吗?$wp\u ozh\u adminmenu
的值是多少?我猜是一根绳子。像…这样的考试怎么样<代码>如果(!is_array($wp_ozh_adminmenu)| count($wp_ozh_adminmenu)==0)
不确定我是否在跟踪,但只是将上面的代码包装在:如果(!is_array($wp_ozh_adminmenu)| count($wp_ozh adminmenu)==0){}中,这没有帮助。这修复了它。我可能需要更多的研究来了解如何/为什么。谢谢你@Ray这些研究应该主要是关于插件,它给你的函数提供了什么类型的变量。它可能会使用多种类型(例如数组或字符串),而PHP的弱类型允许它这样做。随着PHP7.2的突破性变化,您需要进行一些调整。如果您只使用is_array()
并且不再允许任何其他类型,那么将来插件尝试使用字符串时可能会遇到一些问题。这就解决了问题。我可能需要更多的研究来了解如何/为什么。谢谢你@Ray这些研究应该主要是关于插件,它给你的函数提供了什么类型的变量。它可能会使用多种类型(例如数组或字符串),而PHP的弱类型允许它这样做。随着PHP7.2的突破性变化,您需要进行一些调整。如果您只使用is_array()
并且不再允许任何其他类型,那么将来插件尝试使用字符串时可能会遇到一些问题。