hellom是php上的新功能,我的代码有些麻烦
此消息错误
消息:max():仅给出一个参数时,它必须是一个数组
求和(值)我没有麻烦。如您在此图像上看到的。 Image 1
但是,当我尝试获取最大值时,却出现了这样的错误。 image2 error message
这是我的错误脚本(用于查找最大值)
for ($i=0;$i<count($kriteria);$i++)
{
$pembagi[$i] = 0;
for ($j=0;$j<count($alternatif);$j++)
{
$pembagi[$i] = $pembagi[$i] + max($alternatifkriteria[$j][$i]);
}
}
这是我求和(值)的好脚本
for ($i=0;$i<count($kriteria);$i++)
{
$pembagi[$i] = 0;
for ($j=0;$j<count($alternatif);$j++)
{
$pembagi[$i] = $pembagi[$i] + ($alternatifkriteria[$j][$i]);
}
}
有人可以帮助我吗?我需要获得max(值) 喜欢这张图片 results
这是我的数组
$kriteria = [C1,C2,C3,C4,C5,C6];
$alternatif = [ALT1,ALT2,ALT,ALT4,ALT5,ALT6,ALT7];
arrayValue = (
[ALT1][C1] = 5
[ALT1][C2] = 1
[ALT1][C3] = 5
[ALT1][C4] = 2
[ALT1][C5] = 1
[ALT1][C6] = 5
[ALT2][C1] = 2
[ALT2][C2] = 4
[ALT2][C3] = 2
[ALT2][C4] = 5
[ALT2][C5] = 4
[ALT2][C6] = 4
[ALT3][C1] = 1
[ALT3][C2] = 4
[ALT3][C3] = 2
[ALT3][C4] = 5
[ALT3][C5] = 2
[ALT3][C6] = 4
[ALT4][C1] = 2
[ALT4][C2] = 4
[ALT4][C3] = 4
[ALT4][C4] = 5
[ALT4][C5] = 4
[ALT4][C6] = 2
[ALT5][C1] = 5
[ALT5][C2] = 4
[ALT5][C3] = 4
[ALT5][C4] = 1
[ALT5][C5] = 2
[ALT5][C6] = 4
[ALT6][C1] = 4
[ALT6][C2] = 4
[ALT6][C3] = 2
[ALT6][C4] = 5
[ALT6][C5] = 2
[ALT6][C6] = 4
[ALT7][C1] = 4
[ALT7][C2] = 2
[ALT7][C3] = 2
[ALT7][C4] = 5
[ALT7][C5] = 2
[ALT7][C6] = 1
);
答案 0 :(得分:1)
您只需要在max
计算中包括现有值:
for ($i=0;$i<count($kriteria);$i++)
{
$pembagi[$i] = 0;
for ($j=0;$j<count($alternatif);$j++)
{
$pembagi[$i] = max($pembagi[$i], $alternatifkriteria[$j][$i]);
}
}
更新
执行此操作的另一种方法是转置数组(按照array_map
使用here,然后可以使用array_sum
和max
获取总和和最大值每个$kriteria
值的值:
// get the values with numeric keys...
$akv = array_values($alternatifkriteria);
// so we can unpack them to transpose the array...
$akt = array_map(null, ...$akv);
// now we can just sum and take the max of each column
$sums = array_map(function ($v) { return array_sum($v); }, $akt);
$maxs = array_map(function ($v) { return max($v); }, $akt);
print_r($sums);
print_r($maxs);
输出:
Array ( [0] => 23 [1] => 23 [2] => 21 [3] => 28 [4] => 17 [5] => 24 )
Array ( [0] => 5 [1] => 4 [2] => 5 [3] => 5 [4] => 4 [5] => 5 )
答案 1 :(得分:0)
您的目标尚不明确,但这可能可以帮助您向前迈出一步:
for ($i=0;$i<count($kriteria);$i++) {
$pembagi[$i] = max($alternatifkriteria[$i]);
}
更新这是另一种方法
$j = 0;
foreach ($alternatif as $column) {
$pembagi[$j] = max(array_column($alternatifkriteria,$column));
$j++;
}
答案 2 :(得分:0)
因为您的主要目标是显示每一行的最大值,所以此代码将为您提供帮助,此代码不使用max,但目标与您所需的目标相同。
$pembagi = array();
for ($i=0;$i<count($kriteria);$i++)
{
$pembagi [$i] = 0;
for ($j=0;$j<count($alternatif);$j++)
{
if ($j == 0)
{
$pembagi [$i] = $alternatifkriteria[$j][$i];
}
else
{
if ($pembagi [$i] < $alternatifkriteria[$j][$i])
{
$pembagi [$i] = $alternatifkriteria[$j][$i];
}
}
}
}