Foreach inside foreach

时间:2016-04-29 作者:andresgl

我有两种分类法:“颜色”和“推荐颜色”都有相同的术语(相同的颜色)。

我想显示分类法“颜色”的所有术语的列表,并按照建议标记一种颜色。因此,使用下面的foreach,我得到了分类法的选定术语“选定的颜色”

      <?php
        $colours = wp_get_post_terms($post->ID, \'colours\', array("fields" => "all"));
        foreach($colours as $colour) {
          $colour_class = $colours->slug;
          $colour_title = $carcase_single->name;?>
          <div class="<?php echo $colour_class ?>" title="<?php echo $colour_title;?>"></div>
      <?php  }
      ?>
通过这个foreach,我在“推荐颜色”分类法(推荐颜色)中选择了这个术语:

<?php
  $recommended_colours = wp_get_post_terms($post->ID, \'recommended_colours\', array("fields" => "all"));
  foreach($recommended_colours as $recommended_colour) {
    $recommended_colour_class = $recommended_colour->slug; ?>
    <div class="<?php echo $recommended_colour_class ?>" title="<?php echo $colour_title;?>"></div>
<?php } ?>
现在我想加入foreach并用推荐的颜色显示所有选定的颜色。

我“加入”了foreach,但只有我得到了推荐的颜色,而不是所有选定的颜色和推荐的带有以下代码的颜色:

<?php
  $colours = wp_get_post_terms($post->ID, \'colours\', array("fields" => "all"));
  $recommended_colours = wp_get_post_terms($post->ID, \'recommended_colours\', array("fields" => "all"));

  foreach($colours as $colour) {
    $colour_class = $colours->slug;
    $colour_title = $carcase_single->name; }
    foreach($recommended_colours as $recommended_colour) {
      $recommended_colour_class = $recommended_colour->slug;  }
?>
    <div class="<?php echo $colour_class $recommended_colour_class ?>" title="<?php echo $colour_title;?>"></div>
我想获得以下信息:

<div class="<?php echo $colour_class  ?>" title="<?php echo $colour_title;?>"></div>
<div class="<?php echo $colour_class $recommended_colour_class ?>" title="<?php echo $colour_title;?>"></div>
<div class="<?php echo $colour_class ?>" title="<?php echo $colour_title;?>"></div>
<div class="<?php echo $colour_class ?>" title="<?php echo $colour_title;?>"></div>
<div class="<?php echo $colour_class ?>" title="<?php echo $colour_title;?>"></div>
谢谢大家!

1 个回复
最合适的回答,由SO网友:Martin Sotirov 整理而成

首先,我将用以下内容提取推荐颜色术语的所有片段:

$recommended_colours = wp_get_post_terms($post->ID, \'recommended_colours\');
$recommended_colour_slugs = array_map(function($colour) {
    return $colour->slug;
}, $recommended_colours);
。。。这将为您留下一个$Recommendated\\u colour\\u slugs数组,如下所示[\'blue\', \'green\'].

然后,您可以循环使用颜色术语,并使用if-else检查$recommended\\u colour\\u slugs数组中是否存在当前颜色,并相应地设置该项目的css类。

$colours = wp_get_post_terms($post->ID, \'colours\');

foreach($colours as $colour) :
    $colour_class = $colour->slug;
    $colour_title = $colour->name;
    if (in_array($colour->slug, $recommended_colour_slugs)) {
        $colour_class .= \' recommended\';
    }
    ?>
    <div class="<?php echo $colour_class; ?>" title="<?php echo $colour_title;?>"></div>
<?php endforeach;