2017-02-28 65 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