【发布时间】:2021-03-26 18:28:57
【问题描述】:
所以我在这里很迷茫,因为我不知道我的对象是什么样子(不知道为什么我不能使用print_r() 来打印对象)。
基本上从下面的代码中,我需要根据$percent_avg 对$_reviews 的评论进行排序。我从多个 for 循环中获得了 $percent_avg 值,这使事情变得复杂。我不确定如何根据 $percent_avg 变量创建一个新的排序数组。
$_reviews = $block->getReviewCollection($_item->getID());
$sorted_reviews = [];
$sorted_percentage = [];
foreach ($_reviews as $_review) {
$total_percent = 0;
foreach ($_review->getRatingVotes() as $_vote){
$total_percent += $_vote->getPercent();
}
$percent_avg = $total_percent/3;
array_push($sorted_percentage, $percent_avg);
}
我已经尝试使用上面的代码对评论进行排序,我认为我可以为排序的$percent_avg 创建一个新数组并将该值与$_reviews 对象进行比较?但是这样的话,会很慢吗?
//sort array
sort($sorted_percentage);
//run a for loop - if the value in $sorted_percentage matches $percent_avg, push it to a new array
foreach ($sorted_percentage as $percent) {
foreach ($_reviews as $_review) {
$total_percent = 0;
foreach ($_review->getRatingVotes() as $_vote){
$total_percent += $_vote->getPercent();
}
$percent_avg = $total_percent/3;
if($percent_avg == $percent){
array_push($sorted_reviews, $_review);
}
}
}
以上只是一个想法,它不起作用。
我还是 PHP 新手,所以任何建议/帮助将不胜感激。谢谢。
【问题讨论】:
-
您能否显示手头的数组以及您想从哪个数组角度对其进行排序? var_export() 在你的帖子中你的数组会很有帮助。
-
因为您不知道数组的外观,所以答案几乎可以是此页面上的任何内容。 stackoverflow.com/questions/17364127/…如果处理百分比,请阅读此stackoverflow.com/questions/9041909/…
-
所以你想排序:(每条评论的总和
getRatingVotes())/3? -
@kmoser 是的,没错