我有一个for循环,它返回客户订单中包含的产品列表的ID。每个产品ID都通过我无法修改的功能与一个类别相关联,我希望得到一个在返回结果中出现次数最多的类别。
例如,for循环结果返回产品ID:1 2 3 4
随后这些产品ID将与类别相关联:A B B C
我如何仅返回'B',因为它是最常出现的类别?
for ($i = 0, $n = sizeof($order->products); $i < $n; $i++) {
$products = $order->products[$i]['id'];
echo $products; //return all products
echo category_name($products); //this function returns all the category names of each ID, but I only want to return the most frequently occurring one without modifying this function
}
答案 0 :(得分:0)
一种方法是将它们分配给一个数组然后array_count_values
:
for ($i = 0, $n = sizeof($order->products); $i < $n; $i++) {
$products = $order->products[$i]['id'];
echo $products;
echo $categories[] = category_name($products); //assign to array
}
$result = array_count_values($categories);
arsort($result);
echo $result[0];
如果您有多个类别显示相同的最大次数,则会返回数组中最后一个显示的类别。
我会使用foreach
:
foreach($order->products as $product) {
echo $product['id'];
echo $categories[] = category_name($product['id']); //assign to array
}