我有矩阵,其想法是编写一个代码,该代码给出每一行的最大和最小数,而没有任何功能,只是纯逻辑。 例如:
最大数字应为: 567、789、900、906、897
最小数字应为: 45、100、191、323、101
[45, 456, 321, 344, 567],
[100, 434, 173, 400, 789],
[191, 211, 457, 809, 900],
[431, 323, 432, 805, 906],
[708, 232, 897, 101, 696]
$arrNxm = [
[45, 456, 321, 344, 567],
[100, 434, 173, 400, 789],
[191, 211, 457, 809, 900],
[431, 323, 432, 805, 906],
[708, 232, 897, 101, 696]
];
$rows = 5;
$cols = 5;
$intValue = 1;
$max = $arrNxm[0][0];
for($row = 0; $row < $rows; $row++)
{
$max = $arrNxm[$row][0];
for($col = 0; $col < $cols; $col++)
{
if($arrNxm[$row][$col] > $max)
{
$max = $arrNxm[$row][$col];
}
}
}
echo "<pre>";
var_dump($max);
echo "</pre>";
运行代码时,我只会得到一个数字,而且我无法弄清楚为获得正确的输出而应该做的事情。
答案 0 :(得分:0)
您将用同一行的最大值重新写入同一变量。这就是为什么最终您总是会有一个数字的原因。
相反,您应该为结果创建一个数组,并分别存储每一行的最大值,如下所示:
$max = [];
for($row = 0; $row < $rows; $row++)
{
$max[$row] = $arrNxm[$row][0];
for($col = 0; $col < $cols; $col++)
{
if($arrNxm[$row][$col] > $max[$row])
{
$max[$row] = $arrNxm[$row][$col];
}
}
}
答案 1 :(得分:0)
您在这里:
current_cart.rb
输出:
$arrNxm = [
[45, 456, 321, 344, 567],
[100, 434, 173, 400, 789],
[191, 211, 457, 809, 900],
[431, 323, 432, 805, 906],
[708, 232, 897, 101, 696]
];
$row = 5;
$col = 5;
$min = $max = array();
for( $i = 0; $i < $row; $i++ ) {
$min_val = $max_val = $arrNxm[ $i ][0];
for( $j = 0; $j < $col; $j++ ) {
//echo $arrNxm[ $i ][ $j ]." ";
if( $min_val > $arrNxm[ $i ][ $j ] ) {
$min_val = $arrNxm[ $i ][ $j ];
}
if( $max_val < $arrNxm[ $i ][ $j ] ) {
$max_val = $arrNxm[ $i ][ $j ];
}
}
// echo $min_val.PHP_EOL;
$min[] = $min_val;
$max[] = $max_val;
}
print_r( $min );
print_r( $max );
答案 2 :(得分:0)
具有2个foreach循环和两个terney ifs
$arrNxm = [
[45, 456, 321, 344, 567],
[100, 434, 173, 400, 789],
[191, 211, 457, 809, 900],
[431, 323, 432, 805, 906],
[708, 232, 897, 101, 696]
];
foreach ($arrNxm as $rkey => $row) {
foreach ( $row as $ckey => $col) {
// init this row in the results arrays
if ($ckey == 0) { $min[$rkey] = PHP_INT_MAX; $max[$rkey] = 0; }
$min[$rkey] = $min[$rkey] > $col ? $col : $min[$rkey];
$max[$rkey] = $max[$rkey] < $col ? $col : $max[$rkey];
}
}
echo 'MAX' . PHP_EOL . print_r($max,1);
echo 'MIN' . PHP_EOL . print_r($min,1);
结果
MAX
Array
(
[0] => 567
[1] => 789
[2] => 900
[3] => 906
[4] => 897
)
MIN
Array
(
[0] => 45
[1] => 100
[2] => 191
[3] => 323
[4] => 101
)
答案 3 :(得分:0)
我想提出这个建议
$arrNxm = [
[45, 456, 321, 344, 567],
[100, 434, 173, 400, 789],
[191, 211, 457, 809, 900],
[431, 323, 432, 805, 906],
[708, 232, 897, 101, 696]
];
$max = array();
$min = array();
foreach ($arrNxm as $key) {
array_push($max, max($key));
array_push($min, min($key));
}