Нахождение 2 самых маленьких целых чисел из набора 3 - PullRequest
1 голос
/ 12 декабря 2011

Я использую следующее, чтобы найти наибольшее целое число из 3 значений.

<?php
$a = 100;
$b = 200;
$c = -300;
$max = max($a,$b,$c);
foreach( array('a','b','c') as $v) {
    if ($$v == $max) {
        echo "\$$v is $max and therefore the largest";
        break;
    }
}
?>

Это прекрасно работает с выводом: $ b равно 200 и, следовательно, самое большое

Однако теперь я хотел бы также вывести 2 наименьших целых числа из 3.

Таким образом, помимо отображения 1 наибольшего, он также выведет 2 других.

Может кто-нибудь показать мне, как мне этого добиться?

Большое спасибо за любые указатели.

Ответы [ 4 ]

2 голосов
/ 12 декабря 2011
  1. поместите три целых числа в список
  2. sort список
  3. возьмите первые два элемента -> это два наименьших
  4. последний элемент самый большой
1 голос
/ 12 декабря 2011

Я согласен с остальными "сортируй!"толпа людей.Вот полный пример, в котором хранятся имена переменных, поэтому результат такой же, как в вашем примере:

function var_cmp($_a, $_b) {
  global $$_a, $$_b;
  return $$_b - $$_a;
}

$a = 100;
$b = 200;
$c = -300;
$result = array('a', 'b', 'c');
usort($result, 'var_cmp');
printf('$%s is %d and largest, followed by $%s = %d and $%s = %d',
       $result[0], ${$result[0]},
       $result[1], ${$result[1]},
       $result[2], ${$result[2]});
1 голос
/ 12 декабря 2011
$nums = array(100,200,-300); 
sort($nums);
$twoSmallest = array_slice($sorted,0,2);
$largest = array_slice($sorted,-1,1);
1 голос
/ 12 декабря 2011

Для иллюстрации ответа Мэтта:

$list = array(2, 3, 1);
sort($list);

echo "Largest element : ".$list[count($list)-1]."\n";
echo "Two smallest elements :";

for($i=0; $i<2; $i++) {
    echo $list[$i]." ";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...