的论点in_array()
都是错误的方向。查看documentation 可以看到,第一个参数是要检查的值(“针”),第二个参数是要在其中检查的数组(“干草堆”)。
所以这意味着它总是评估为false
, 这意味着条件中的代码每次都在运行。
只需交换参数即可解决问题:
if( ! in_array( $title_alpha, $post_alphas ) ) {
$post_alphas[] = $title_alpha;
}
不过,有一种(我认为)更简洁的方法可以做到这一点,只需少量代码。您可以先获取帖子,然后使用
array_map()
将数组中的每个值仅替换为每个标题的第一个字母。然后最后
array_unique()
要删除重复项,请执行以下操作:
$posts = get_posts( array(
\'post_type\' => \'foundation_firms\',
\'post_status\' => \'publish\',
\'order\' => \'ASC\',
\'posts_per_page\' => -1,
\'orderby\' => \'title\',
) );
$letters = array_map( $posts, function( $post ) {
return $post->post_title[0];
} );
$letters_unique = array_unique( $letters );