2013-05-08 38 views
0

Ive得到了来自DB输出数组查找混合阵列的最高MAX()

Array 

    (
     [0] => Array 
      (
       [name] => Fernando Alonso 
       [time1] => 3.25 
       [time2] => 3.25 
       [time3] => 3.5 
      ) 

     [1] => Array 
      (
       [name] => Jenson Button 
       [time1] => 34 
       [time2] => 41 
       [time3] => 41 
      ) 
    ) 

我想做的事是每个驱动器输出他们的名字和他们的时间最快的财产以后像

费尔南多Alsonso ,时间3 - 3.5

巴顿,时间2,时间3 - 41

我打得周围使用max()但无法得到它的工作,因为它是就吃克麻烦作为第一个元素是一个字符串,而不是一个int/num,

任何想法如何我会写这个功能?

回答

1

好了在这里你去,你是正确的尝试与max()

function get_highest_time($driver) { 
    // First find the highest time 
    $highest_time = max($driver['time1'], $driver['time2'], $driver['time3']); 
    // now find all of the array keys that match that time 
    $times = array_keys($driver, $highest_time); 
    // now turn that array of keys into a string and add the highest time to the end 
    return implode(', ', $times) . ' - ' . $highest_time; 
} 

foreach ($arr as $driver) { // Where $arr is your array of drivers 
    print $driver['name'] . ': ' . get_highest_time($driver) . '<br />'; 
} 

编辑:

只注意到你说你想要的司机最快的时间,这肯定是最低的数字?如果是这种情况,请换用max()min()

+0

工作过的魅力,谢谢! – sam 2013-05-08 16:16:36

+0

您是否看到我的编辑? – RMcLeod 2013-05-08 16:17:15

+0

是的,谢谢,对不起草率的措辞在我身边 – sam 2013-05-08 16:19:48