删除冗余数据数组

时间:2019-01-06 15:39:52

标签: php arrays multidimensional-array

根据我在Link之前的问题,仍然存在未解决的问题。 数组结果是多余的。我只需要单个数据 atm结果如下 enter image description here

我只想成为这样 enter image description here

我需要删除重复的数据,因此每个显示的人只有1个,并将其存储到数组中。 所以我可以使用数组,当我打电话时,数组会给我像

   array(
0.94197664983117,
0.94197664983117,
0.96085998187867,
0.96055551656181,
0.94850004357715,
0.95310290634961,
0.95625985627734
);

我使用此代码

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"});

编辑

首先这是我的$ probabilitas数据 enter image description here

我只想得到每个kriteria的结果,像这样 enter image description here

如何获得结果?我正在使用这样的公式

  

c1 =(-1 / log(7))*   ((0,217391304 * log(0,217391304))+(0,086956522 * log(0,086956522))+(0,043478261 * log(0,043478261))+(0,086956522 * log(0,086956522 ))+(0,217391304 * log(0,217391304))+(0,173913043 * log(0,173913043))+(0,173913043 * log(0,173913043)))

     

c2 =(-1 / log(7))*   (((0,043478261 * log(0,043478261))+(0,173913043 * log(0,173913043))+(0,173913043 * log(0,173913043))+(0,173913043 * log(0,173913043) ))+(0,173913043 * log(0,173913043))+(0,173913043 * log(0,173913043))+(0,086956522 * log(0,086956522)))

     

c3 =(-1 / log(7))*   (((0,238095238 * log(0,238095238))+(0,095238095 * log(0,095238095))+(0,095238095 * log(0,095238095))+(0,19047619 * log(0,19047619) ))+(0,19047619 * log(0,19047619))+(0,095238095 * log(0,095238095))+(0,095238095 * log(0,095238095)))

     

c4 =(-1 / log(7))*   (((0,071428571 * log(0,071428571))+(0,178571429 * log(0,178571429))+(0,178571429 * log(0,178571429))+(0,178571429 * log(0,178571429) ))+(0,035714286 * log(0,035714286))+(0,178571429 * log(0,178571429))+(0,178571429 * log(0,178571429)))

     

c5 =(-1 / log(7))*   (((0,058823529 * log(0,058823529))+(0,235294118 * log(0,235294118))+(0,117647059 * log(0,117647059))+(0,235294118 * log(0,235294118) ))+(0,117647059 * log(0,117647059))+(0,117647059 * log(0,117647059))+(0,117647059 * log(0,117647059)))

     

c6 =(-1 / log(7))*   (((0,208333333 * log(0,208333333))+(0,166666667 * log(0,166666667))+(0,166666667 * log(0,166666667))+(0,083333333 * log(0,083333333) ))+(0,166666667 * log(0,166666667))+(0,166666667 * log(0,166666667))+(0,041666667 * log(0,041666667)))

对于静态代码,我可以使用此代码

$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);

如果我使用代码,则必须重复使用它。如果$条件和$ Alternative的数目未知,这将非常麻烦。因此,我想动态地制作它。因此,我不需要随时重写代码。我的代码的结果也变得多余。我只想显示一次

enter image description here

2 个答案:

答案 0 :(得分:1)

使用此代码,这是您要执行的操作吗?

$probabilitas =
array (
    array (
        0.21739130434783,
        0.043478260869565,
        0.23809523809524,
        0.071428571428571,
        0.058823529411765,
        0.20833333333333
    ),

    array (
        0.08695652173913,
        0.17391304347826,
        0.095238095238095,
        0.17857142857143,
        0.23529411764706,
        0.16666666666667
    ),

    array (
        0.043478260869565,
        0.17391304347826,
        0.095238095238095,
        0.17857142857143,
        0.11764705882353,
        0.16666666666667
    ),

    array (
        0.08695652173913,
        0.17391304347826,
        0.19047619047619,
        0.17857142857143,
        0.23529411764706,
        0.083333333333333
    ),

    array (
        0.21739130434783,
        0.17391304347826,
        0.19047619047619,
        0.035714285714286,
        0.11764705882353,
        0.16666666666667
    ),

    array (
        0.17391304347826,
        0.17391304347826,
        0.095238095238095,
        0.17857142857143,
        0.11764705882353,
        0.16666666666667
    ),

    array (
        0.17391304347826,
        0.08695652173913,
        0.095238095238095,
        0.17857142857143,
        0.11764705882353,
        0.041666666666667
    )
);

// UPDATE
// 7 alternatif arrays, each with 6 element
$alternatif_count = count($probabilitas[0]);

// We choose eg. every first element of every alternatif array, and push them onto a column array
for($j=0; $j<$alternatif_count; $j++){
    $col_arr[] = array_column($probabilitas, $j);
}

// Then for each column we calculate entropy
$entropy_arr = array();
foreach($col_arr as $col){
    $calc = 0;
    foreach($col as $prob){
        $calc += $prob * log($prob);
        $entropy = ((-1)/log(7)) * $calc;
    }
    array_push($entropy_arr, $entropy);
}

//showb($entropy_arr);

更新
请对此进行测试,并验证计算方法是否正确。

答案 1 :(得分:0)

基于@VörösAmadea的回答,我只是尝试添加一些内容,也许可以使用。但是我还没有尝试过代码。

$alternatif_count = count($probabilitas[0]);
          for($j=0; $j<$alternatif_count; $j++){
          $col_arr[] = array_column($probabilitas, $j);
       }
    $entropys = array();
    $no=-1;
    foreach($col_arr as $col){
       $no++;
       $calc = 0;
          foreach($col as $prob){
              $calc += $prob * log($prob);
              $entropy = ((-1)/log(7)) * $calc;
          }
       $entropys[$no] = $entropy;
    }

    showb($entropys);