首页 > 解决方案 > PHP | 将元素添加到数组并在循环后排序

问题描述

我试图得到一些数值,恢复感谢:wp_get_post_terms,它检索我自定义分类法的女儿分类法,其中价格以数字形式插入其中。

目标是按照决定的顺序使用 sort 和 rsort 显示价格。

但是,在恢复值时,将元素添加到数组并稍后对它们进行排序是错误的

代码:

foreach ($qprice as $r)
    {
        $children = $r->term_id;
        $child_terms = get_term_children($r->term_id, 'servizi_pro');
        $all_terms   = wp_get_post_terms($r->ID, 'servizi_pro');


        foreach ( $all_terms as $term )
        {

            if (!in_array($term->term_id, $child_terms))
                continue;

            
            $price = $term->name;

            $final_price = [$price];
        }


        rsort($final_price, SORT_NUMERIC);
        foreach($final_price as $pr_f) {
            echo '<span  class="numberCircle"><span>'.str_pad($pr_f, 9).''.'€'.'</span></span>';
        }
    }

加:

  $final_price = [];
foreach ($qprice as $r)
{
    $children = $r->term_id;
    $child_terms = get_term_children($r->term_id, 'servizi_pro');
    $all_terms   = wp_get_post_terms($r->ID, 'servizi_pro');

    foreach ( $all_terms as $term )
    {
        if (!in_array($term->term_id, $child_terms))
            continue;

        $price = $term->name;
        $final_price[] = $price;
    }
}

sort($final_price, SORT_NUMERIC);
foreach($final_price as $pr_f) {
    echo '<span  class="numberCircle"><span>'.str_pad($pr_f, 9).'€'.'</span></span>';
}

标签: phparrayssorting

解决方案


您需要$final_price在内部foreach循环之前初始化数组,并将其推送到数组上,而不是每次通过循环都替换它。

foreach ($qprice as $r)
{
    $children = $r->term_id;
    $child_terms = get_term_children($r->term_id, 'servizi_pro');
    $all_terms   = wp_get_post_terms($r->ID, 'servizi_pro');

    $final_price = [];
    foreach ( $all_terms as $term )
    {

        if (!in_array($term->term_id, $child_terms))
            continue;

        $price = $term->name;
        $final_price[] = $price;
    }

    rsort($final_price, SORT_NUMERIC);
    foreach($final_price as $pr_f) {
        echo '<span  class="numberCircle"><span>'.str_pad($pr_f, 9).''.'€'.'</span></span>';
    }
}

推荐阅读