我觉得我已经接近了,但是如果array_search
的输出在输出中包含相同的值,我不确定如何合并。仅供参考-我正在使用WordPress查询此数据。
这是我到目前为止所拥有的:
PHP:
<?php
global $wpdb,$post;
$result = $wpdb->get_results("SELECT $wpdb->posts.* FROM $wpdb->posts WHERE post_type = 'clients'");
foreach ($result as $post):
setup_postdata($post);
$terms = wp_get_post_terms($post->ID, array( 'state', 'product_type' ));
$result = array_search('state', array_column($terms, 'taxonomy', 'name'));
$term = $terms[0];
?>
<?php if ($term -> taxonomy === 'state' && !empty($term)) : ?>
<p><?php echo $terms[1]->name; ?>, <?php echo $terms[0]->name; ?></p>
<?php endif; ?>
<?php endforeach;?>
<?php wp_reset_postdata(); ?>
哪个会输出:
Shirts, Alabama
Shirts, Colorado
Jeans, Colorado
Jeans, Iowa
Socks, Maine
但是我想将Jeans
和Shirts
组合在一起以输出:
Shirts, Alabama, Colorado
Jeans, Colorado, Iowa
Socks, Maine
这还应该进行设置,以便在还有另一个项目(例如Sweaters
)时也将这些项目组合在一起。
我也不确定我是否“正确”地编写了此内容,因此我也乐于接受建议。
答案 0 :(得分:0)
您可以先收集数据,然后在单独的循环中打印。这使分组更加容易。在您的示例中:替换此行:
<p><?php echo $terms[1]->name; ?>, <?php echo $terms[0]->name; ?></p>
使用
<?php $my_output[$terms[1]->name][] = $terms[0]->name; ?>
收集多维数组中的数据。最后,放:
<?php foreach($my_output as $key => $values): ?>
<p><?php echo $key; ?>, <?php echo implode(',', $values); ?></p>
<?php endforeach;?>
打印所有内容。检查manual中我使用的内爆功能。为了获得最佳实践,您应该在开始的某个位置(在第一个foreach之前)初始化$my_output = array()
。