2011-11-19 4 views
0
$a=2; 
$b=6; 
$c=7; 
$r1=8; 
$r2=9; 
$r3=6; 
$array = array(
    array('MIDDAY'=>$a,'RATE'=>$r1), 
    array('SHORTDAY'=>$b,'RATE'=>$r2), 
    array('LONGDAY'=>$c,'RATE'=>$r3) 
); 

У меня есть массив, как это и я хочу этот массив обработать и хочет проверить, количество которых больше вроде как выше LONGDAY = 7 то я хочу, чтобы это LONGDAY ключа в одна переменная и скорость ее в другой переменнойнайти максимальное значение в ассоциативном массиве с условием

, а также хотят, чтобы проверить, если два счетчика равно тогда как LONGDAY = 7 и MIDDAT = 7 то я хочу, чтобы проверить с RATE, скорость которого больше то же я хочу это LONGDAY ключ в одной переменной и ее RATE в другой переменной (для этого в этом случае больше RATE)

ответ

2

Что-то вдоль этих строк должно сделать это, чтобы отсортировать массив в соответствии с вашими правилами и взять верхний результат.

$array = array(
    array('type' => 'MIDDAY', 'val' => $a, 'rate' => $r1), 
    array('type' => 'SHORTDAY', 'val' => $b, 'rate' => $r2), 
    array('type' => 'LONGDAY', 'val' => $c, 'rate' => $r3) 
); 

usort($array, function ($a, $b) { 
    if  ($a['val'] < $b['val']) return 1; 
    else if ($a['val'] > $b['val']) return -1; 
    else return $b['rate'] - $a['rate']; 
}); 

$var1 = $array[0]['type']; 
$var2 = $array[0]['rate']; 

Примечание. Это использует синтаксис анонимных функций PHP 5.3+.

+0

Это не сработает http://codepad.viper-7.com/sOPMIs И поскольку первая проблема проста, вторая проблема более интересна – Peter

+0

[Исправлено] (http://codepad.viper-7.com/) 0m6bvE), поэтому выполняется извлечение верхних значений. Я бы предложил более однородную структуру массива, чтобы сделать вещи намного проще. – deceze

+0

Как насчет второй проблемы? Я уверен, что может быть лучшее решение, чем мое ... В любом случае он ищет самую высокую ценность в MIDDAY, SHORTDAY, LONGDAY not in RATE – Peter

Смежные вопросы