如何在wordpress / php中过滤数组的特定元素?

时间:2019-03-20 22:07:42

标签: php html arrays wordpress

我有如下所示的php代码,其中为调试目的添加了Line#A。

undefined reference to 'clean_'

在添加Line#A时,在不同情况下我得到以下o / p:

<div class="vidlist-main__meta cf">
    <?php

    //if ( has_excerpt() ) {the_excerpt();}
    $tags = get_the_tags( get_the_ID() );
    $cats = wp_get_post_categories( get_the_ID() );                // Line#Z
    echo '<pre>'; print_r($cats); echo '</pre>';                  // Line#A
    if ( $tags || $cats  ) : ?>    // Line#B
        <span class="archive-links">
            <?php
            \CPAC\Episodes\generate_markup_for_categories( $cats );    // Line#C
            \CPAC\Episodes\generate_markup_for_tags( $tags );          // Line#D
            ?>
        </span>
    <?php endif;?>
</div>

问题陈述:

我想知道在Line#Z之后或Line#Z处需要添加什么代码,以便Line#Z仅占用Case A: Array ( [0] => 13085 [1] => 13093 ) Case B: Array ( [0] => 1 [1] => 13087 ) Case C: Array ( [0] => 1 [1] => 13085 )

1 个答案:

答案 0 :(得分:0)

如果您只想保留一个(或几个值),则可以使用数组相交

<div class="vidlist-main__meta cf">
    <?php

    //if ( has_excerpt() ) {the_excerpt();}
    $tags = get_the_tags( get_the_ID() );
    $cats = array_intersect(wp_get_post_categories( get_the_ID() ), [13093]);                // Line#Z
    echo '<pre>'; print_r($cats); echo '</pre>';                  // Line#A
    if ( $tags || $cats  ) : ?>    // Line#B
        <span class="archive-links">
            <?php
            \CPAC\Episodes\generate_markup_for_categories( $cats );    // Line#C
            \CPAC\Episodes\generate_markup_for_tags( $tags );          // Line#D
            ?>
        </span>
    <?php endif;?>
</div>

最简单的例子是:

$a = [13085,13093];
print_r(array_intersect($a, [13093]));

输出

Array
(
    [1] => 13093
)

Sandox