Как я могу ограничить количество элементов массива

У меня есть следующая часть кода:

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_slice а также array_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

Решение

Вы можете сделать это, получив длину массива и, если длина меньше или равна желаемой сумме, и добавьте элемент в конец массива.

Вот простой пример, чтобы сделать это, я не знаю, если это то, что вы хотите … 🙂

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

Для дополнительной информации :
$ExpectedArray не является массив, это значение, которое вы ожидаете $yourArray пожалуйста, проверьте этот о примере in_array.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]