2017-02-28 51 views
1

我的代码有问题。即使我试图让它在WordPress模板中工作,我也决定在这里发布它,因为我认为这是与我的代码中的PHP相关的错误。foreach中的相同值得到删除

所以,这是我的代码。一切都很顺利,它显示贡献者在一个页面上按字母的价值或他们的姓氏。问题是'family_name'meta_key输出两个相同的值,两个(或更多)中的一个被删除或从我的输出中丢失。我搜索并尝试了很多东西,但我仍然无法找到解决方案。提前致谢。

<?php 
$terms = get_terms(array(
    'taxonomy' => 'contributors', 
    'meta_key' => 'letter_group', 
    'meta_value' => 'a')); 

$order_terms = array(); 

foreach($terms as $term) { 
    $position = get_field('family_name', $term); 
    $order_terms[$position] ='<a href="'. get_bloginfo('url') . '/contributors/' . $term->slug . '">'.$term->name.'</a><br>'; 
} 

ksort($order_terms); 
foreach($order_terms as $order_term) { 
    echo $order_term;} 

wp_reset_postdata(); ?> 
+0

你在哪里得到$位置? – Dimi

+0

@Dimi显然是第一个循环的第一行。弗朗索瓦,我对WordPress不太了解,但为了调试它,你可以按照惯例做...如果你打印数组,并且一次回显变量,你会得到你期望得到的结果吗?问题发生在哪里? – sidyll

+0

@sidyll我不好,今天盯着代码太久了。 〜_〜 – Dimi

回答

2

之一,你可以做的事情就是让一个数组,而不是

foreach($terms as $term) { 
    $position = get_field('family_name', $term); 
    $order_terms[$position][] ='<a href="'. get_bloginfo('url') . '/contributors/' . $term->slug . '">'.$term->name.'</a><br>'; 
} 

然后打印出来作为一个嵌套的数组

foreach($order_terms as $a) { 
    foreach($a as $order_term) 
    echo $order_term;} 
+0

这正是发生的情况,'$ position'是家族名称,所以当姓氏相同时,它会覆盖前一个条目。虽然我不喜欢嵌套数组。我认为'$ position'可以完全消除,只需在循环中使用'$ order_terms [] ='
';'。密钥将是数字,但无论如何,它们不会被使用。你怎么看? –
sidyll

+0

嗯。我喜欢。在这种情况下,ksort($ order_terms);将需要用asort($ order_terms)替换,并且一切都将工作。 – Dimi

+0

Ach,我没有注意到他在使用姓氏。我认为asort不会是一样的,它会按'$ term-> slug'排序,那对吧?我们今天在代码上主演得太久了:D – sidyll