如何限制数组项的数量

时间:2015-04-26 02:41:41

标签: php arrays wordpress arraylist limit

我已经获得了以下部分代码:

private function get_shortcodes() {
        $shortcodes = array();
        $shortcodes += array_fill_keys( array( 'WPBUSDIRMANADDLISTING',
                                               'businessdirectory-submitlisting' ),
                                        array( &$this->controller, 'submit_listing' ) );
        $shortcodes += array_fill_keys( array( 'WPBUSDIRMANMANAGELISTING',
                                               'businessdirectory-managelistings',
                                               'businessdirectory-manage_listings' ),
                                        array( &$this->controller, 'manage_listings' ) );
        $shortcodes += array_fill_keys( array( 'WPBUSDIRMANVIEWLISTINGS',
                                               'WPBUSDIRMANMVIEWLISTINGS',
                                               'businessdirectory-view_listings',
                                               'businessdirectory-viewlistings',
                                               'businessdirectory-listings' ),
                                        array( &$this, '_listings_shortcode' ) );




        $shortcodes += array_fill_keys( array( 'WPBUSDIRMANUI',
                                               'businessdirectory',
                                               'business-directory' ),
                                        array( &$this->controller, 'dispatch' ) );
        $shortcodes += array_fill_keys( array( 'businessdirectory-search',
                                               'businessdirectory_search' ),
                                        array( &$this->controller, 'search' ) );
        $shortcodes['businessdirectory-featuredlistings'] = array( &$this, '_featured_listings_shortcode' );

        return apply_filters( 'wpbdp_shortcodes', $shortcodes );
    }

部分......

$shortcodes += array_fill_keys( array( 'WPBUSDIRMANVIEWLISTINGS',
                                               'WPBUSDIRMANMVIEWLISTINGS',
                                               'businessdirectory-view_listings',
                                               'businessdirectory-viewlistings',
                                               'businessdirectory-listings' ),
                                        array( &$this, '_listings_shortcode' ) );

...应该在我的网站上显示一些目录列表。 有用。但它正在根据插件设置检索10个列表。我只需要检索2.换句话说,我需要限制它。

我尝试使用array_slicearray_splice array_unique只检索一些值,但它没有用。

我做错了什么?

例如,我尝试使用它:

array_slice( ( &$this, '_listings_shortcode' ),0,2)

没有办法。

修改

还在努力......

if (!in_array('WPBUSDIRMANMVIEWLISTINGS', $shortcodes)){
    if(count($shortcodes)>=2)
        array_shift($shortcodes);
    $shortcodes[] = 'WPBUSDIRMANMVIEWLISTINGS';
}

编辑2

嗯,通过php手动逻辑它是正确的,但它仍然无法工作,但没有得到任何错误,我尝试了这两种方法:

if (!in_array('_listings_shortcode', $shortcodes)){
        if(count($shortcodes)>=1)
            array_shift($shortcodes);
        $shortcodes[] = ('_listings_shortcode');
    }   

这个

if (!in_array('_listings_shortcode', $shortcodes)){
        $count = count($shortcodes);
        if($count>=1)
            array_shift($shortcodes);
        $shortcodes[] = ('_listings_shortcode');
    }

1 个答案:

答案 0 :(得分:0)

您可以通过获取数组长度以及长度是否小于或等于所需的数量来实现,并将元素添加到数组的末尾。

这是一个简单的例子,我不知道你想要的是什么......:)

if (!in_array($ExpectedArray, $yourArray)){
    if(count($yourArray)>=2)
        array_shift($yourArray);
    $yourArray[] = $ExpectedArray;
}

了解更多信息: $ExpectedArray不是数组,它是您期望的值$yourArray请查看this关于in_array示例。