【问题标题】:How to make dynamic array from static array如何从静态数组制作动态数组
【发布时间】:2019-01-05 17:47:42
【问题描述】:

我的静态数组有问题,我需要用动态数组更新,有人可以帮我吗?因为如果我有很多数据并且我必须一个一个地创建,那就太难了。

$kriteria = [C1,C2,C3,C4,C5,C6];

$alternatif = [ALT1,ALT2,ALT,ALT4,ALT5,ALT6,ALT7];

$nEntropy = array();
    for ($i=0;$i<count($kriteria);$i++)
        {
            for ($j=0;$j<count($alternatif);$j++)
                {
                    $nEntropy[$i] = (((-1)/log(7)) *( 
                    ($probabilitas[0][0]*log($probabilitas[0][0]))+
                    ($probabilitas[1][0]*log($probabilitas[1][0]))+
                    ($probabilitas[2][0]*log($probabilitas[2][0]))+
                    ($probabilitas[3][0]*log($probabilitas[3][0]))+
                    ($probabilitas[4][0]*log($probabilitas[4][0]))+
                    ($probabilitas[5][0]*log($probabilitas[5][0]))+
                    ($probabilitas[6][0]*log($probabilitas[6][0]))
                ));
            }
        }

$nEntropy1 = array();
    for ($i=0;$i<count($kriteria);$i++)
        {
            for ($j=0;$j<count($alternatif);$j++)
                {
                    $nEntropy1[$i] = (((-1)/log(7)) *( 
                    ($probabilitas[0][1]*log($probabilitas[0][1]))+
                    ($probabilitas[1][1]*log($probabilitas[1][1]))+
                    ($probabilitas[2][1]*log($probabilitas[2][1]))+
                    ($probabilitas[3][1]*log($probabilitas[3][1]))+
                    ($probabilitas[4][1]*log($probabilitas[4][1]))+
                    ($probabilitas[5][1]*log($probabilitas[5][1]))+
                    ($probabilitas[6][1]*log($probabilitas[6][1]))
                ));
            }
        }

$nEntropy2 = array();
    for ($i=0;$i<count($kriteria);$i++)
        {
            for ($j=0;$j<count($alternatif);$j++)
                {
                    $nEntropy2[$i] = (((-1)/log(7)) *( 
                    ($probabilitas[0][2]*log($probabilitas[0][2]))+
                    ($probabilitas[1][2]*log($probabilitas[1][2]))+
                    ($probabilitas[2][2]*log($probabilitas[2][2]))+
                    ($probabilitas[3][2]*log($probabilitas[3][2]))+
                    ($probabilitas[4][2]*log($probabilitas[4][2]))+
                    ($probabilitas[5][2]*log($probabilitas[5][2]))+
                    ($probabilitas[6][2]*log($probabilitas[6][2]))
                ));
            }
        }

$nEntropy3 = array();
    for ($i=0;$i<count($kriteria);$i++)
        {
            for ($j=0;$j<count($alternatif);$j++)
                {
                    $nEntropy3[$i] = (((-1)/log(7)) *( 
                    ($probabilitas[0][3]*log($probabilitas[0][3]))+
                    ($probabilitas[1][3]*log($probabilitas[1][3]))+
                    ($probabilitas[2][3]*log($probabilitas[2][3]))+
                    ($probabilitas[3][3]*log($probabilitas[3][3]))+
                    ($probabilitas[4][3]*log($probabilitas[4][3]))+
                    ($probabilitas[5][3]*log($probabilitas[5][3]))+
                    ($probabilitas[6][3]*log($probabilitas[6][3]))
                ));
            }
        }

$nEntropyy4 = array();
    for ($i=0;$i<count($kriteria);$i++)
        {
            for ($j=0;$j<count($alternatif);$j++)
                {
                    $nEntropy4[$i] = (((-1)/log(7)) *( 
                    ($probabilitas[0][4]*log($probabilitas[0][4]))+
                    ($probabilitas[1][4]*log($probabilitas[1][4]))+
                    ($probabilitas[2][4]*log($probabilitas[2][4]))+
                    ($probabilitas[3][4]*log($probabilitas[3][4]))+
                    ($probabilitas[4][4]*log($probabilitas[4][4]))+
                    ($probabilitas[5][4]*log($probabilitas[5][4]))+
                    ($probabilitas[6][4]*log($probabilitas[6][4]))
                ));
            }
        }

$nEntropy5 = array();
    for ($i=0;$i<count($kriteria);$i++)
        {
            for ($j=0;$j<count($alternatif);$j++)
                {
                    $nEntropy5[$i] = (((-1)/log(7)) *( 
                    ($probabilitas[0][5]*log($probabilitas[0][5]))+
                    ($probabilitas[1][5]*log($probabilitas[1][5]))+
                    ($probabilitas[2][5]*log($probabilitas[2][5]))+
                    ($probabilitas[3][5]*log($probabilitas[3][5]))+
                    ($probabilitas[4][5]*log($probabilitas[4][5]))+
                    ($probabilitas[5][5]*log($probabilitas[5][5]))+
                    ($probabilitas[6][5]*log($probabilitas[6][5]))
                ));
            }
        }

showb($nEntropy);
showb($nEntropy1);
showb($nEntropy2);
showb($nEntropy3);
showb($nEntropy4);
showb($nEntropy5);

我的结果的这张图片 如您所见,如果我有很多数据,我的代码确实是静态的,而且很难 我也需要这样的结果

编辑 Vörös Amadea 的答案是正确的,但仍有一些不足,我关于结果的第二个问题仍然是大量的。有没有办法只显示一次? 正如您之前在我的图像上看到的那样,我需要删除重复数据,因此每个人只有 1 个将显示并将其存储到数组中。

我修改了 Vörös Amadea 的一些代码,因为如果我不修改它,我会收到错误“未定义变量:概率”

这是我修改的代码。

for($x=0;$x<1;$x++){
$nth = $x;
$entz = array();
for ($i=0;$i<count($kriteria);$i++)
    {
        for ($j=0;$j<count($alternatif);$j++)
            {
                ${"entz$nth"}[$i] = (((-1)/log(7)) *( 
                ($probabilitas[0][$nth]*log($probabilitas[0][$nth]))+
                ($probabilitas[1][$nth]*log($probabilitas[1][$nth]))+
                ($probabilitas[2][$nth]*log($probabilitas[2][$nth]))+
                ($probabilitas[3][$nth]*log($probabilitas[3][$nth]))+
                ($probabilitas[4][$nth]*log($probabilitas[4][$nth]))+
                ($probabilitas[5][$nth]*log($probabilitas[5][$nth]))+
                ($probabilitas[6][$nth]*log($probabilitas[6][$nth]))
                ));
            }
        }
    }
showb(${"entz$nth"});

【问题讨论】:

  • 您/将不得不进一步澄清您的问题。所有数组都是动态的,这意味着它们可以被操纵。您了解自己的数据,但并不清楚您要完成什么。
  • 我的代码很糟糕,我需要创建 entropy1,2,3.... 来定义它,我的意思是我可以只使用单个熵吗?我还创建了静态喜欢 $probabilitas[0][5],我需要动态可能喜欢 $probabilitas[$i][$j]。

标签: php arrays


【解决方案1】:

您可以像这样在 for 循环中生成变量名称。
只需更改$how_many_i_want 的值即可。

$how_many_i_want = 3;

for($x=0;$x<$how_many_i_want;$x++){
    generate_entropy($x);
}

function generate_entropy($nth){
    $kriteria = ['C1','C2','C3','C4','C5','C6'];
    $alternatif = ['ALT1','ALT2','ALT','ALT4','ALT5','ALT6','ALT7'];

    ${"nEntropy$nth"} = array();
    for ($i=0;$i<count($kriteria);$i++){
        for ($j=0;$j<count($alternatif);$j++){
            ${"nEntropy$nth"}[$i] = (((-1)/log(7)) *(
                    ($probabilitas[0][$nth]*log($probabilitas[0][$nth]))+
                    ($probabilitas[1][$nth]*log($probabilitas[1][$nth]))+
                    ($probabilitas[2][$nth]*log($probabilitas[2][$nth]))+
                    ($probabilitas[3][$nth]*log($probabilitas[3][$nth]))+
                    ($probabilitas[4][$nth]*log($probabilitas[4][$nth]))+
                    ($probabilitas[5][$nth]*log($probabilitas[5][$nth]))+
                    ($probabilitas[6][$nth]*log($probabilitas[6][$nth]))
                ));
        }
    }
    showb(${"nEntropy$nth"});
}

【讨论】:

  • 有错误信息 Undefined variable: probabilitas
  • 我已经修改了你的代码,结果很顺利,但只针对第一个问题。对于第二个问题,它仍然没有运行。你能帮帮我吗?
  • @AdventureMarvelous,你真的不应该在给出答案后添加问题。在给出这个答案的时候,有一个问题。此外,任何方式都不应该有一个以上的问题。如果您有新问题,请通过相应按钮提出新问题。你可以参考这个问题。如果确实“结果顺利......第一个问题”,您应该将此答案标记为已接受。
  • 不,从一开始我的问题就是两个。 1.我需要用动态数组更新 2.“你可以看到我的代码真的是静态的,如果我有很多数据而且我需要我的结果喜欢这样”而且我已经在图像上给出了黑框,这意味着如果我只需要 1 行的结果。也许你需要检查我的编辑问题。没问题,如果你只是想得到分数,我会给你,我会打开新问题
  • 我开了一个新问题,你能帮忙回答一下吗?
猜你喜欢
  • 2012-11-15
  • 2021-07-22
  • 1970-01-01
  • 1970-01-01
  • 2021-11-16
  • 2014-06-03
  • 1970-01-01
  • 1970-01-01
  • 2019-06-02
相关资源
最近更新 更多