返回存储在foreach循环外部的var中的所有值

时间:2012-01-07 10:53:30

标签: php arrays variables loops foreach

所以我假设某些东西被覆盖了,但我不确定如何阻止它并检索循环外的所有值。有什么想法吗?

foreach($gallids as $gallterm)
{
    $postterms = wp_get_post_terms($gallterm, 'type', array("fields" => "slugs"));

    $checkmissing = $postterms[0];                  
    print_r($checkmissing); // Check Terms for missing images - works here.
}

print_r($checkmissing); // Check Terms for missing images - not working here 
                        // - seems to be getting last or first val only.

5 个答案:

答案 0 :(得分:4)

首先初始化您想要稍后使用的变量:

$checkmissing = array();

然后在foreach里面将帖子术语的第一个条目附加到该数组:

foreach($gallids as $gallterm)
{
    list($checkmissing[]) = wp_get_post_terms($gallterm, 'type', array("fields" => "slugs"));
}

请参阅$checkmissing[],这有效地阻止您覆盖它。它将追加到数组中。

最后你可以在循环后输出结果:

print_r($checkmissing);

注意:如果wp_get_post_terms返回一个空数组,您应该做一些额外的处理:

foreach($gallids as $gallterm)
{
    $terms = wp_get_post_terms($gallterm, 'type', array("fields" => "slugs"))
        AND list($checkmissing[]) = $terms
    ;
}

答案 1 :(得分:0)

$checkmissing = array();

foreach($gallids as $gallterm)
{
    $postterms = wp_get_post_terms($gallterm, 'type', array("fields" => "slugs"));

    $checkmissing[] = $postterms[0];                  
    print_r($checkmissing); // Check Terms for missing images - works here.
}

print_r($checkmissing); // Check Terms for missing images
                        // will get all missing images as array

答案 2 :(得分:0)

foreach($gallids as $gallterm) {

        $postterms = wp_get_post_terms( $gallterm, 'type', array("fields" => "slugs") );
        $checkmissing[] = $postterms[0];
    }

    print_r($checkmissing); //Now this will be a 2d array with all your values..

答案 3 :(得分:0)

$checkmissing = array();
    $i=1;
    foreach($gallids as $gallterm)
    {
        $postterms = wp_get_post_terms($gallterm, 'type', array("fields" => "slugs"));

        $checkmissing[$i] = $postterms[0];                  
        //print_r($checkmissing); // Check Terms for missing images - works here.
    $i++;
    }

    print_r($checkmissing);

答案 4 :(得分:0)

我尝试了上面的一些例子,他们并没有按照我想要的方式工作。所以我四处寻找并做了一些研究,这就是我如何让它为我工作。

在我的特定情况下,我需要获取特定帖子的所有类别ID,然后将该变量返回到WP_Query arguments数组中。

首先,您需要获取帖子条款

$terms = get_the_terms( $post->ID, 'category' );

接下来,您需要初始化以后要使用的变量:

$cat_terms = array();

接下来,您将声明foreach获取每个单独的术语ID

foreach ( $terms as $term ) {
    $cat_terms[] = $term->term_id;
}

现在假设您要为此$ cat_terms变量使用返回逗号分隔列表。我们将使用'join'功能

$comma_separated_terms = join( ", ", $cat_terms );

现在让我们假设您想使用此变量将WP_Query循环放入“category__in”参数中。我们将使用'array_values'。

$values = array_values($cat_terms);

关于这个的好处是现在我们可以将这个$ values变量插入到WP_Query参数中:

<?php global $post;
        $query = new WP_Query(array(
            'post_type' => 'post_type_name',
            'category__in' => $values));
?>

在我的特定情况下,客户希望根据博客帖子类别在侧边栏中显示一些自定义帖子类型。因此,我需要获取所有博客文章条款,并将其与自定义帖子类型类别的条款进行匹配。

最终代码看起来像这样:

<?php
    $terms = get_the_terms( $post->ID, 'category' );

    $cat_terms = array();

    foreach ( $terms as $term ) {
        $cat_terms[] = $term->term_id;
    }

    $values = array_values($cat_terms);
?>
    <h3><?php echo $title; ?></h3>

    <?php global $post;
        $query = new WP_Query(array(
            'post_type' => 'custom_post_type',
            'category__in' => $values));

            if ( $query->have_posts() ) : ?>

                <?php while ( $query->have_posts() ) : $query->the_post(); ?>

                // Code for loop goes here

                <?php endwhile; endif; ?>

            <?php wp_reset_postdata(); ?>