Как грамотно реализовать выбор максимального значения (php)

12
Rustamus
На сайте с 24.01.2010
Offline
110
6485

Всем доброго времени суток.

Стоит следующая задача:

В процессе выполнения кода, переменным присваиваются значения

После присваивания всех значений нужно выбрать максимальное

В зависимости от того, какая переменная оказалось максимальной, нужно выводить разные текстовые сообщения

Как я пытаюсь это реализовать:

$bmax=max($b1,$b2,$b3,$b4,$b5);


if ($bmax=$b1)
{
$res='бла бла бла';
}

if ($bmax=$b2)
{
$res=' другие бла бла бла';
}

и т.д.

Вопросы:

1. В процессе присваивания переменным значений, возможно такое, что у некоторых переменных будут одинаковые значения. Которые могут оказаться максимальными. Не вызовет ли это ошибки? Какой в этом случае результат будет выбран в качестве максимального?

2. Если будет несколько максимальных значений, то при сравнении значения максимума со значениями переменных может выйти несколько текстовых сообщений? Нужно только 1 (неважно какой из них)

3. Возможно я вообще неправильно пытаюсь сделать это. Подскажите, пожалуйста, как возможно это сделать более грамотно и рационально.

=> PoiskDonora.ru (Poiskdonora.ru): стань Бетменом - спаси чью-то жизнь! => Получайте посетителей Бесплатно (http://zalike.ru?/utm_source=searcheng&utm_campaign=podpis) Ежедневные обзоры (http://linkblink.ru/) самых интересных сайтов
Ord
На сайте с 15.11.2005
Offline
175
Ord
#1

В процессе выполнения кода помещайте все переменные в массив, а в конце определяйте максимальное значение функцией max()

Создаем лучший кулинарный проект, iamcook.ru
Rustamus
На сайте с 24.01.2010
Offline
110
#2

ОК, но это не решит следующие вопросы:

1. В процессе присваивания переменным значений, возможно такое, что у некоторых переменных будут одинаковые значения. Которые могут оказаться максимальными. Не вызовет ли это ошибки? Какой в этом случае результат будет выбран в качестве максимального?

2. Если будет несколько максимальных значений, то при сравнении значения максимума со значениями переменных может выйти несколько текстовых сообщений? Нужно только 1 (неважно какой из них)
P0
На сайте с 13.04.2008
Offline
20
#3
Rustamus:
Всем доброго времени суток.
Вопросы:
1. В процессе присваивания переменным значений, возможно такое, что у некоторых переменных будут одинаковые значения. Которые могут оказаться максимальными. Не вызовет ли это ошибки? Какой в этом случае результат будет выбран в качестве максимального?

2. Если будет несколько максимальных значений, то при сравнении значения максимума со значениями переменных может выйти несколько текстовых сообщений? Нужно только 1 (неважно какой из них)

Можете воспользоваться функцией: array_unique() (принимает на входе массив array и возвращает новый массив без дублирующих значений.)

Пример:


$arr[]=1;
$arr[]=2;
$arr[]=3;
$arr[]=8;
$arr[]=8;

$max=max(array_unique($arr));

switch ($max) {

case 8:
$res=' другие бла бла бла';
break;

case 15:
$res=' другие бла бла бла';
break;

}

echo $res;

Хотя max() - в любом случае возвращает всегда одно значение...

FeoOne
На сайте с 27.12.2008
Offline
32
#4

$m1 = array(1,2,3,4,5);
$m2 = array(1=>'ололо', 2=>'ололо', 3=>'яндекс унылое говно', 4=> 'хихихи хихихи', 5=>'отличные стихи');
$max = max($m1);
echo $m2[$max];
O3
На сайте с 17.11.2008
Offline
127
#5

$mess=array('mess1','mess2','mess3');
$arr=array(0=>1,1=>4,2=>6);
$max=max($arr);
print($mess[key($max)]);
Не проверял.

-------------

oleg3d добавил 12-02-2010 в 13:43

Опередил )

Rustamus
На сайте с 24.01.2010
Offline
110
#6

Большое спасибо за советы.

Касательно моего примеры, вот этот совет

$m1 = array(1,2,3,4,5);

$m2 = array(1=>'ололо', 2=>'ололо', 3=>'яндекс унылое говно', 4=> 'хихихи хихихи', 5=>'отличные стихи');
$max = max($m1);
echo $m2[$max];

Должен выглядеть так?


$m1 = array($b1,$b2,$b3,$b4,$b5);
$m2 = array(1=>'текст1', 2=>'текст2', 3=>'текст3', 4=> 'текст4', 5=>'текст5');
$max = max($m1);
echo $m2[$max];

или так?


$m1 = array($b1,$b2,$b3,$b4,$b5);
$m2 = array($b1=>'текст1', $b2=>'текст2', $b3=>'текст3', $b4=> 'текст4', $b5=>'текст5');
$max = max($m1);
echo $m2[$max];

В результате, мне нужно присвоить переменной $result одно текстовое значение

(вывод этого значения будет сделан позже, другими функциями)

Это сделать нужно так?

$result=$m2[$max];

Прошу не обижаться на мои, наверное, глупые вопросы - до этого никогда вообще с php дела не имел. А тут нужно срочно переделать скрипт.

malls
На сайте с 08.08.2005
Offline
255
#7
Rustamus:
Если будет несколько максимальных значений

упс...

наверное я отстал от жизни... как все таки быстро она меняется.

Еще совсем недавно в математике считалось что если значение максимально - то оно одно, т.е. то самое: максимальное, все остальные как бы меньше.

А тут на тебе... :(

Чертовы информационные технологии - все ставят с ног не голову. Пойду теперь в водопроводчики наверное!

T.R.O.N
На сайте с 18.05.2004
Offline
314
#8
malls:
А тут на тебе...

вот так и начинает проявляться старение... =)))))

Rustamus,

Ван не кажется что из Ваших слов, программа должна понимать такие вещи как "неоднозначность" и "неопределенность"... Это уже ИИ

Rustamus:
Должен выглядеть так?

да

От воздержания пока никто не умер. Хотя никто и не родился! Prototype.js был написан теми, кто не знает JavaScript, для тех, кто не знает JavaScript (Richard Cornford)
O3
На сайте с 17.11.2008
Offline
127
#9
malls:
упс...
Пойду теперь в водопроводчики наверное!

Там покруче математика.

Rustamus
На сайте с 24.01.2010
Offline
110
#10

Ух ты, сколько сарказма ;)

Под несколькими максимальными значениями я имел в виду, что непосредственно максимальное значение может оказаться у нескольких переменных.

Т.е. в итоге может получиться так

$b1=3

$b2=7

$b3=7

$b4=2

$b5=5

Тут получается максимальное значение равно 7

Ок, мы его определили. Основной вопрос не в этом, а в другом:

мне нужно, чтобы итоговой переменной $result присвоилось определенное значение (текст), в зависимости от того, у какой из переменных ($b1,$b2...$b5) оказалось максимальное значение.

Как-то запутанно, похоже, опять объяснил ;)

Т.е. если максимум оказался у $b1, то $result="текст1". если у $b2, то $result="текст2" и т.д

Если максимальное значение получилось только у одной переменной, то все в порядке. А если у нескольких?

В конечном счете мне неважно от какой именно переменной, значение которой равно максимуму (если несколько переменных с максимальным значением) будет присвоено определенное значение (текст) переменной $result

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий