PHP - 在多维数组中查找最小值/最大值

时间:2011-03-17 04:44:56

标签: php

我需要在PHP中找到多维数组中的最小值和最大值,我有我认为可以在下面工作但是它一直给我一个解析错误,这是功课,我不是要求任何人为我做但是我是初学者,任何帮助都会受到赞赏。

<?php

/* 2 dimensional array in PHP - strictly an array of arrays */

$multable[] = array("11", "12", "15", "22", "41", "42");  
$multable[] = array("6", "7", "16", "17", "22", "23");  
$multable[] = array("1", "15", "16", "20", "22", "3");  


# ---------------------------------------------
?>
<html>
<head>
<title>An array of arrays in PHP</title>
</head>
<body bgcolor=white>
<h2>Two dimensional array</h2><br>
<table border=2 cellpadding=2 cellspacing=2>

<?php

/* display a table from a 2D array */
for ($j=0;$j<3;$j++) {
    print "<tr>";
    for ($k=0;$k<6;$k++) {
            echo "<td>",$multable[$j][$k],"</td>";
            }
    print "</tr>";
$max_value = 0;
foreach ($multable as $myMax) {
if ($max_value<$myMax) {
 $max_value = $myMax;
  }
}
echo $max_value;
?>
</table>
</body>
</html> 

6 个答案:

答案 0 :(得分:7)

还有一个单行:

$max = max( array_map("max", $multable) );

答案 1 :(得分:1)

使用php的max()min()函数。

答案 2 :(得分:1)

最大:

<?php
$multable = array();
$multable[] = array("11", "12", "15", "22", "41", "42");  
$multable[] = array("6", "7", "16", "17", "22", "23");  
$multable[] = array("1", "15", "16", "20", "22", "3");  
$max = -99999999;
foreach($multable as $sub){

  $tempMax = max($sub);

  if($tempMax > $max){
    $max = $tempMax;
  }

}

echo $max;

?>

你可以算出min:)

答案 3 :(得分:0)

您的foreach次迭代只执行一个维度 - 每个$myMax是您的六个元素列表之一,而不是单个标量值。这就是为什么你的比较不起作用而且条件永远不正确的原因,你试图将标量与数组进行比较。您称之为$myMax的内容更适合称为$currentRow

这没关系,因为PHP有​​一些函数可以找到数组的最小值和最大值

http://us.php.net/manual/en/function.min.php
http://us.php.net/manual/en/function.max.php

$max_value = 0; $min_value = $multable[0][0];
foreach ($multable as $currentRow) 
{
    // COMPARE CURRENT ROW's MIN/MAX TO MIN/MAX_VALUE 
    // AND MAKE NEW ASSIGNMENT IF APPROPRIATE
}

或者把它交给你看看老师说的话:

function fComp ($f) {return function ($a,$b) use ($f) {return $f($a, $f($b));};}

$max = array_reduce($multable, fComp('max'), $multable[0][0]);
$min = array_reduce($multable, fComp('min'), $multable[0][0]);

echo "max: $max <br />";
echo "min: $min";

PS - 在你早期的迭代中制作HTML表格,丢失常量会很好。使用count来获取数组的长度 - 或者更好 - 使用foreach,就像稍后使用一样。 (即使使用foreach,您仍然需要嵌套其中两个,它不会逐个元素地迭代二维数组)

答案 4 :(得分:0)

最小值

echo min(array_map("min", $multable));

最大价值

echo max(array_map("max", $multable));

答案 5 :(得分:0)

$minArray = array();
        foreach($arrayVal as $arrI=> $arrK)
        {

            if($arrK == min($arrayVal ) )
            {
                array_push($minArray , $arrayVal );
            }
        }

print_r($minArray);

你走了:))