【问题标题】:Dividing elements in arrays on specific numbers将数组中的元素除以特定数字
【发布时间】:2021-09-11 15:53:30
【问题描述】:

我有 N 个这样的数组(例如 4 个,但数量可以不同)

k1 = [1,0,0,0,1,0,1]

k2 = [0,1,1,0,1,0,1]

k3 = [1,0,0,0,1,0,0]

k4 = [0,0,0,0,1,1,1]

我需要得到以下数组:

k1 = [0.5,0,0,0,0.25,0,0.33]

k2 = [0, 1,1,0,0.25,0,0.33]

k3 = [0.5,0,0,0,0.25,0,0]

k4 = [0, 0,0,0,0.25,1,0.33]

这个想法是将每个元素除以其他数组中相同索引的“1”出现次数。所以你总是得到 1 作为 k1[i]+k2[i]+k3[i]+k4[i]+...kn[i]

的总和

【问题讨论】:

    标签: arrays php-7


    【解决方案1】:

    你必须用所有元素的总和创建一个新数组,然后像这样划分: 必须有一种“更清洁”的方式来做到这一点,但这很有效:

    $k1 = [1,0,0,0,1,0,1];
    
    $k2 = [0,1,1,0,1,0,1];
    
    $k3 = [1,0,0,0,1,0,0];
    
    $k4 = [0,0,0,0,1,1,1];
    
    //we create an array with names of n array, i took 4 just to test it but it will works with n
    $name=[];
    for ($v = 1; $v <= 4; $v++) {
        $name[$v]="k".$v;
    }
    
    $sum=[0,0,0,0,0,0,0];
    
    for ($k = 0; $k <= 6; $k++) {
        for ($j = 1; $j <= 4; $j++) {
            $sum[$k]=$sum[$k]+${$name[$j]}[$k];
        }
    }
    
    //and now we update 
    
    for ($l = 0; $l <= 6; $l++) {
        if($sum[$l]!==0){
            for ($q = 1; $q <= 4; $q++) {       
                ${$name[$q]}[$l]=${$name[$q]}[$l]/$sum[$l];
            }
        }
    }
    
    //display to test
    for ($m = 0; $m <= 6; $m++) {
        echo $k1[$m];
        echo " | ";
    }
    

    【讨论】:

    • 我认为不是 for ($l = 0; $l
    猜你喜欢
    • 2016-11-11
    • 2022-01-12
    • 1970-01-01
    • 2018-04-16
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    相关资源
    最近更新 更多