我需要在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>
答案 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);
你走了:))