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

12
malls
На сайте с 08.08.2005
Offline
255
#11

Может так:

$mass[0][0] = $b1;

$mass[0][1] = "текст1";
$mass[1][0] = $b2;
$mass[1][1] = "текст2";
$mass[2][0] = $b3;
$mass[2][1] = "текст3";
$mass[3][0] = $b4;
$mass[3][1] = "текст4";

$max = 0;
$text = "";

for($i=0;$i<count($mass);$i++) {
if($mass[$i][0] > $max) {
$max = $mass[$i][0];
$text = $mass[$i][1];
}
}

echo $text;

текст будет соответствовать последней переменной имеющей макс. значение в вашем случае $b3

W
На сайте с 10.05.2009
Offline
114
#12

malls - это самый хреновый вариант в плане производительности.

я бы посоветовал такой вариант -


$m = array('текст1'=>$b1, 'текст2'=>$b2, 'текст3'=>$b3, 'текст4'=>$b4,'текст5'=>$b5);
$max = max ($m);
$m = array_flip ($m);
echo $m[$max];
Rustamus
На сайте с 24.01.2010
Offline
110
#13

Ок, спасибо!

Я правильно понимаю, что для того, чтобы у меня в итоге был не вывод, а именно присваивание значение определенного текста в переменную $result мне нужно изменить

echo $m[$max];

на

$result=$m[$max];

?

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

Rustamus да, вы правильно поняли, еще стоит заметить чтобы array_flip отработала коректно (поменяла значения с ключами в масиве местами) необходимио, чтобы переменне $b1-$b7 имели тип integer или string. Если значение имеет неверный тип, будет выдано предупреждение и пара ключ/значение не будет обработана.

Если значение встречается несколько раз, для обработки будет использоваться последний встреченный ключ, а все остальные будут потеряны.

malls
На сайте с 08.08.2005
Offline
255
#15
wolfston:
malls - это самый хреновый вариант в плане производительности.

мне просто показалось нескромным целые тексты в виде ключей использовать! :)

dvaes
На сайте с 03.09.2007
Offline
65
#16

как вариант для поиска ключа можно придумать что-то вроде array_search(max($array), $array)

т.е.


$texts = array("текст1", "текст2", "текст3", "текст4", "текст5", "текст6");
$array = array($a1, $a2, $a3, $a4, $a5, $a6);
echo $texts[array_search(max($array), $array)];

а вообще лучше делать один цикл по массиву)


$texts = array("текст1", "текст2", "текст3", "текст4", "текст5", "текст6");
$array = array($a1, $a2, $a3, $a4, $a5, $a6);
$max = array(0, 0);
foreach ($array as $key => $value)
$max[1] < $value && $max = array($key,$value);

echo $texts[$max[0]];

в общем вариантов написали много)

[Удален]
#17

ой какие вы тут все смешные :D

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

Всем еще раз огромное спасибо за помощь!

12

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