2012-10-19 83 views
0

我正在使用哪個代碼返回匹配2個值的分類法。如何對數組的結果(按名稱)排序?

一切正常,但我不知道如何訂購我的結果。現在他們按照一定的順序顯示,可能是日期不確定。我試圖讓他們的字母順序顯示(名字)..

從我的PHP模板我的代碼是在這裏http://pastie.org/5083124

我談論的陣列粘貼的是這個

<?php 
    foreach ($all_terms as $all_term) { 
    //print_r($all_terms); 

     $tax_test = get_option('woo_categories_panel_taxonomies_'.$all_term->taxonomy); 

      $post_images = array(); 
      $posts_aray = array(); 
      $parent_id = $all_term->term_taxonomy_id; 
      $term_name = $all_term->name; 
      $term_parent = $all_term->parent; 
      $term_slug = $all_term->slug; 
      $term_id = $all_term->term_id; 
      $term_link = get_term_link($all_term, $all_term->taxonomy); 
      $counter_value = $all_term->count; 

      ?> 
      <div class="childListings"> 
       <div class="block"> 
        <a href="<?php echo $term_link; ?>"> 
         <?php 
          $block_counter++; 
         ?> 
        </a> 

        <h2><a href="<?php echo $term_link; ?>"><?php echo $term_name ?> <br/><span>(<?php echo $counter_value; ?> Solicitors)</span></a></h2> 

       </div><!-- /.block --> 
      </div><!-- /.child Listings--> 
      <?php 

      if ($block_counter % 6 == 0) { 
      ?> 
       <div class="fix"></div> 
      <?php 
      } // End IF Statement 

     // End IF Statement 

     ?> 
     <?php 


    } // End For Loop 

?> 

我有使用$ args和ksort查看了幾個不同的選項,但是我有點迷惑,似乎無法按字母順序對網站前端的結果進行排序。

任何人都可以在我的代碼中識別我能夠讓我的結果具有排序順序嗎?

感謝

回答

4

當您查詢數據庫時,您可以通過稍微排序來避免在PHP中排序。這應該會更快。

變化:

$all_terms = $wpdb->get_results("SELECT * FROM ipt1y7_term_taxonomy,ipt1y7_terms WHERE ipt1y7_term_taxonomy.parent='{$ex[2]}' AND ipt1y7_term_taxonomy.term_id=ipt1y7_terms.term_id"); 

...到:

$all_terms = $wpdb->get_results("SELECT * FROM ipt1y7_term_taxonomy,ipt1y7_terms WHERE ipt1y7_term_taxonomy.parent='{$ex[2]}' AND ipt1y7_term_taxonomy.term_id=ipt1y7_terms.term_id ORDER BY ipt1y7_terms.name"); 

即只需添加ORDER BY name到您的原始查詢。結果將返回按名稱排序,而不需要您在PHP中進一步做任何事情,並且排序將發生在數據庫服務器上。 WordPress數據庫表termsname列有索引,所以這應該是非常快的;有效地爲您預先分類數據。 (見description of the terms table in the WP database schema

+0

+1一個很好的接...有更有用的答案 –

+0

我不知道WordPress允許寫你自己的查詢。這絕對比我的解決方案好。 –

+0

真棒!非常感謝 – Redwall

0

有在http://php.net/manual/en/function.sort.php

$fruits = array("lemon", "orange", "banana", "apple"); 
sort($fruits); 
foreach ($fruits as $key => $val) { 
    echo "fruits[" . $key . "] = " . $val . "\n"; 
} 

上面的例子來看看例子將輸出:

fruits[0] = apple 
fruits[1] = banana 
fruits[2] = lemon 
fruits[3] = orange 
+0

嗨,謝謝,是的,我發現了一個類似的例子之前,水果,但我沒有成功地瞭解如何將其應用到我的代碼上面。你能指出我的方向是否正確嗎?非常感謝 – Redwall

+0

我應該強調,我的數組中的術語並不像你在這個例子中用檸檬,蘋果等那樣硬編碼......如果你看着我的上面的pastie,我匹配頁面頂部的2個分類法if這是有道理的 – Redwall

0

這是可能的使用usort和自己的比較函數:

<?php 

/** 
* For a bit of testing. 
*/ 
$all_terms = array(); 
$names = array('foo', 'baz', 'bar', 'qux', 'aaa'); 
foreach($names as $name) { 
    $tmp = new stdClass(); 
    $tmp->name = $name; 
    $all_terms[] = $tmp; 
} 

/** 
* Here, we do the sorting: 
*/ 
usort($all_terms, function($a, $b) { 
    if($a->name === $b->name) { 
     return 0; 
    } 
    return ($a->name < $b->name) ? -1 : 1; 
}); 

/** 
* And the results: 
*/ 
var_dump($all_terms);