从一组3中找到2个最小的整数

时间:2011-12-12 19:29:06

标签: php arrays foreach integer

我正在使用以下内容来发现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,因此最大

但是,我现在还希望输出3中的2个最小整数。

因此,除了显示最大的1之外,它还会输出另外2个。

有人能告诉我如何实现这个目标吗?

非常感谢任何指示。

4 个答案:

答案 0 :(得分:2)

  1. 将三个整数放在一个列表中
  2. sort列表
  3. 取前两个元素 - &gt;这是最小的两个
  4. 最后一个元素是最大的

答案 1 :(得分:1)

说明马特答案:

$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]." ";
}

答案 2 :(得分:1)

$nums = array(100,200,-300); 
sort($nums);
$twoSmallest = array_slice($sorted,0,2);
$largest = array_slice($sorted,-1,1);

答案 3 :(得分:1)

我同意其余的“排序!”人群。这是一个完整的示例,其中保留了所涉及变量的名称,因此结果与示例中的结果类似:

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]});