PHP |向数组中添加元素并在循环后排序

PHP |向数组中添加元素并在循环后排序,php,arrays,sorting,Php,Arrays,Sorting,我想得到一些数值​​由于:wp\u get\u post\u terms,它检索自定义分类法的子分类法,其中以数字形式插入价格 目标是使用sort和rsort按确定的顺序显示价格 但是,在恢复值时,我错误地将元素添加到数组中,然后对它们进行排序 代码: foreach($qprice作为$r) { $children=$r->term\u id; $child_terms=get_term_childs($r->term_id,'servizi_pro'); $all_terms=wp_get_

我想得到一些数值​​由于:
wp\u get\u post\u terms
,它检索自定义分类法的子分类法,其中以数字形式插入价格

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

但是,在恢复值时,我错误地将元素添加到数组中,然后对它们进行排序

代码:

foreach($qprice作为$r)
{
$children=$r->term\u id;
$child_terms=get_term_childs($r->term_id,'servizi_pro');
$all_terms=wp_get_post_terms($r->ID,'servizi_pro');
foreach($term的所有条款)
{
if(!在数组中($term->term\u id,$child\u terms))
继续;
$price=$term->name;
$final_price=[$price];
}
rsort(最终价格,排序数字);
foreach(最终价格为$pr\f){
回音''.'str_pad($pr_f,9)。''.''.''.''.'.'';
}
}
加上:

$final_price=[];
foreach($qprice作为$r)
{
$children=$r->term\u id;
$child_terms=get_term_childs($r->term_id,'servizi_pro');
$all_terms=wp_get_post_terms($r->ID,'servizi_pro');
foreach($term的所有条款)
{
if(!在数组中($term->term\u id,$child\u terms))
继续;
$price=$term->name;
$final_price[]=$price;
}
}
排序($final_price,sort_NUMERIC);
foreach(最终价格为$pr\f){
回音''.'str_pad($pr_f,9)。''.'欧元'.';
}

您需要在内部
foreach
循环之前初始化
$final\u 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');

    $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>';
    }
}
foreach($qprice作为$r)
{
$children=$r->term\u id;
$child_terms=get_term_childs($r->term_id,'servizi_pro');
$all_terms=wp_get_post_terms($r->ID,'servizi_pro');
美元最终价格=[];
foreach($term的所有条款)
{
if(!在数组中($term->term\u id,$child\u terms))
继续;
$price=$term->name;
$final_price[]=$price;
}
rsort(最终价格,排序数字);
foreach(最终价格为$pr\f){
回音''.'str_pad($pr_f,9)。''.''.''.''.'.'';
}
}

完美!但是,如果我将指令从rsort改为sort,它不会像sort应该做的那样对它们进行排序,为什么?那应该按照相反的顺序对它们进行排序。是的,是的,我可能写错了,你的代码功能完善,我感谢你,rsort显然给了我从最昂贵的价格到最便宜的价格,但是用sort替换你的rsort代码,它不会从最便宜的到最贵的顺序排列,我想知道为什么我想不出有什么好的理由会发生这种情况。您是否保留了“排序数值”?是:排序($final\u price,SORT\u NUMERIC);foreach($pr_f的最终价格){echo'.str_pad($pr_f,9)。'€'}
  $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>';
}
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>';
    }
}