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

3 回答 3

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 数据库表terms在列上有索引name,所以这应该很快;有效地为您预先分类数据。(请参阅WP 数据库架构中的表描述terms。)

于 2012-10-19T09:18:22.107 回答
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
于 2012-10-19T09:08:13.087 回答
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 );
于 2012-10-19T09:12:56.847 回答