返回for循环中最常出现的值/行

时间:2014-07-29 18:23:33

标签: php loops for-loop

我有一个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
}

1 个答案:

答案 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
}