2010-03-15 41 views
0

我正在为我们的办公室工作在显示屏上,而且我似乎无法想出一种很好的方法来查找一组数据中的最大数值在二维阵列中。我看过使用max()和asort(),但他们似乎不应付二维数组。在二维数组中查找并标记三个值中的最大值

我通过我们的mysql类返回我的数据,所以行被返回到一个二维数组中。

Array(
[0] => Array(
    [am] => 12, 
    [sales] => 981), 
[1] => Array(
    [am] => 43, 
    [sales] => 1012), 
[2] => Array(
    [am] => 17, 
    [sales] => 876) 
) 

我需要输出一个类时,在我的表中为销售值最高的AM进行数据处理。没有比较他们全部在> if语句。我试图在数组上获取max(),但是它返回一个数组,因为它在维度中查找。将它指向特定维时,它将返回键而不是值。

我想我可以asort()数组,并弹出最高价值,将其存储在一个变量,然后与我的foreach()循环比较,但这似乎有困难排序跨两个维度。

最后,我想我可以foreach()的值,每次比较它们与前一个,直到我发现最大的。然而,这种方法意味着存储每个值,幸运的是只有三个值,但是再次与它们进行比较。

当然,必须有一个简单的方法来实现这一点,短转换成一维数组,然后做一个asort()呢?

+1

我知道这是不是你正在寻找的答案,但不能您选择通过SQL MAX值?除此之外,我认为你唯一的选择是通过数组将最大值存储在变量循环中,如果当前值更大,则取代最大值。如果您有兴趣,我会提供一个答案来表明这一点。 – plod 2010-03-15 10:48:06

+0

我可以使用sql来选择它,但我使用帐户经理ID的顺序来保持用户的正确顺序。因为每个AM都有三个统计数据,所以我使用它来确保当我将它们循环出来时,它们都处于正确的顺序!轻微的hax也许;) – 2010-03-15 11:04:59

回答

2
<?php 
function customSort($a, $b) 
{ 
    if($a['sales'] == $b['sales']) 
     return 0; 
    else 
     return $a['sales'] < $b['sales'] ? -1 : 1; 
} 

usort($array, 'customSort'); 
?> 

是我会做什么

+0

+1但数组键需要用引号括起来,否则PHP会将它们评估为常量。 – 2010-03-15 11:00:01

+0

好点!完成 – Kolky 2010-03-15 11:03:20

+0

太好了,谢谢!多么方便的功能:D – 2010-03-15 11:10:51

相关问题