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>';
}
}