警告:count():count()函数的语法问题

时间:2019-06-12 作者:Bunö

我正在尝试修复一个在使用php 7.2之前工作正常的函数。这个错误来自count()函数,但我不知道如何重写它。你能帮帮我吗?

以下是错误消息:警告:count():参数必须是在中实现Countable的数组或对象。。。

此函数是用于在类别上方显示页面的代码的一部分。

is\\U类别:如果当前页面是类别,则id:类别标识符:类别标题

private function get_category($id_cat = false){
        $Category = new stdClass();
        $Category->is_category = false;
        $Category->id = 0;
        $Category->title = \'\';
        if (( is_category())||(is_tax(\'portfolio_categories\'))) {
            $Category->is_category = true;
        }
        if ($id_cat === false) {
            $cat = single_cat_title("",false);
        }
        else{
            if ( (int) $id_cat > 0) {
                $cat = get_cat_name($id_cat);
            }
            else{
                return $Category;
            }
        }
        $page_id = false;
        $titre_page = sanitize_title($cat);

        global $wpdb;
        $req = $wpdb->prepare("SELECT ID FROM {$wpdb->prefix}posts WHERE post_name=%s AND post_content != \'\' AND post_type = \'page\' AND post_status = \'publish\'", $titre_page);
        $page = $wpdb->get_row($req);
        $Category->id = (count($page) > 0) ? $page->ID : 0;
        $Category->title = $titre_page;
        return $Category;
    }
我不是php开发人员,所以感谢您的宽容

2 个回复
最合适的回答,由SO网友:majick 整理而成

尝试将其替换为原始代码:

$page = $wpdb->get_row($req);
使用此选项:

$page = $wpdb->get_row($req, ARRAY_A);
这将使它返回一个数组而不是一个对象。

然后您可以执行以下操作:

if ($page && isset($page[\'ID\'])) {
    $category->id = $page[\'ID\'];
} else {$category->id = 0;}

SO网友:Bunö

我替换了被指控的线路

$Category->id = (count($page) > 0) ? $page->ID : 0;
具有

if (isset($page)){
$Category->id = $page->ID;
}
else {
$Category->id = 0;
}
我不确定语法,但它是有效的

文件:[https://www.php.net/manual/fr/function.count.php][1]

相关推荐

付费会员专业版在PHP中显示用户名

我正在使用插件Paid Membership Pro (free version). 在标题下方,如果有用户登录到我的网站,我希望它说:欢迎使用用户名我该怎么做?以下是获取成员级别的方法:if( is_user_logged_in() && function_exists(\'pmpro_hasMembershipLevel\') && pmpro_hasMembershipLevel() ) { gl