dormbaf90464 2017-03-11 18:10
浏览 64
已采纳

在Laravel中控制器除以零的ErrorException

I have this problem when executing,view on my localhost the warning said the line where 'k2k1'=>(1/$v->k1k2) is division by zero. but i'm sure $v->k1k2 is not 0. the value is in but it was read as 0. is there something i missed ?

this is my Controller.

public function importFile()
    {
        if(Input::hasFile('import_file')){
            $path = Input::file('import_file')->getRealPath();
            $data = Excel::load($path, function($reader){ })->get();
            if(!empty($data) && $data->count()){    
                foreach($data as $key => $v){
                    $insert[] = [
                        'jenis_perusahaan'=>$v->jenis_perusahaan,
                        'k1k1'=>1,
                        'k1k2'=>$v->k1k2, 'k1k3'=>$v->k1k3, 'k1k4'=>$v->k1k4,
                        'k1k5'=>$v->k1k5, 'k1k6'=>$v->k1k6, 'k1k7'=>$v->k1k7,

            //here----> 'k2k1'=>(1/$v->k1k2), 'k2k2'=>1, 'k2k3'=>$v->k2k3, 'k2k4'=>$v->k2k4,
                        'k2k5'=>$v->k2k5, 'k2k6'=>$v->k2k6, 'k2k7'=>$v->k2k7,

                        'k3k1'=>(1/$v->k1k3), 'k3k2'=>(1/$v->k2k3), 'k3k3'=>1, 'k3k4'=>$v->k3k4,
                        'k3k5'=>$v->k3k5, 'k3k6'=>$v->k3k6, 'k3k7'=>$v->k3k7,           

                        'k4k1'=>(1/$v->k1k4), 'k4k2'=>(1/$v->k2k4), 'k4k3'=>(1/$v->k3k4), 'k4k4'=>1,
                        'k4k5'=>$v->k4k5, 'k4k6'=>$v->k4k6, 'k4k7'=>$v->k4k7,

                        'k5k1'=>(1/$v->k1k5), 'k5k2'=>(1/$v->k2k5), 'k5k3'=>(1/$v->k3k5), 'k5k4'=>(1/$v->k4k5),
                        'k5k5'=>1, 'k5k6'=>$v->k5k6, 'k5k7'=>$v->k5k7,

                        'k6k1'=>(1/$v->k1k6), 'k6k2'=>(1/$v->k2k6), 'k6k3'=>(1/$v->k3k6), 'k6k4'=>(1/$v->k4k6),
                        'k6k5'=>(1/$v->k5k6), 'k6k6'=>1, 'k6k7'=>$v->k6k7,

                        'k7k1'=>(1/$v->k1k7), 'k7k2'=>(1/$v->k2k7), 'k7k3'=>(1/$v->k3k7), 'k7k4'=>(1/$v->k4k7),
                        'k7k5'=>(1/$v->k5k7), 'k7k6'=>(1/$v->k6k7), 'k7k7' => 1 
                    ];

                    //Menghitung Total Kolom Matrik
                    $sum1 = (1 + (1/$v->k1k2) + (1/$v->k1k3) + (1/$v->k1k4) + (1/$v->k1k5) + (1/$v->k1k6) + (1/$v->k1k7) );
                    $sum2 = ( $v->k1k2 + 1 + (1/$v->k2k3) + (1/$v->k2k4) + (1/$v->k2k5) + (1/$v->k2k6) + (1/$v->k2k7) );
                    $sum3 = ( $v->k1k3 + $v->k2k3 + 1 + (1/$v->k3k4) + (1/$v->k3k5) + (1/$v->k3k6) + (1/$v->k3k7) );
                    $sum4 = ( $v->k1k4 + $v->k2k4 + $v->k3k4 + 1 + (1/$v->k4k5) + (1/$v->k4k6) + (1/$v->k4k7) );
                    $sum5 = ( $v->k1k5 + $v->k2k5 + $v->k3k5 + $v->k4k5 + 1 + (1/$v->k5k6) + (1/$v->k5k7));
                    $sum6 = ( $v->k1k6 + $v->k2k6 + $v->k3k6 + $v->k4k6 + $v->k5k6 + 1 + (1/$v->k6k7) );
                    $sum7 = ( $v->k1k7 + $v->k2k7 + $v->k3k7 + $v->k4k7 + $v->k5k7 + $v->k6k7 + 1);

                    //Nilai setiap matrik dibagi dengan total kolomnya
                    $k1k1=(1/$sum1); $k1k2=($v->k1k2/$sum2); $k1k3=($v->k1k3/$sum3); $k1k4=($v->k1k4/$sum4); $k1k5=($v->k1k5/$sum5); $k1k6=($v->k1k6/$sum6); $k1k7=($v->k1k7/$sum7);
                    $k2k1=((1/$v->k1k2)/$sum1); $k2k2=(1/$sum2); $k2k3=($v->k2k3/$sum3); $k2k4=($v->k2k4/$sum4); $k2k5=($v->k2k5/$sum5); $k2k6=($v->k2k6/$sum6); $k2k7=($v->k2k7/$sum7);
                    $k3k1=((1/$v->k1k3)/$sum1); $k3k2=((1/$v->k2k3)/$sum2); $k3k3=(1/$sum3); $k3k4=($v->k3k4/$sum4); $k3k5=($v->k3k5/$sum5); $k3k6=($v->k3k6/$sum6); $k3k7=($v->k3k7/$sum7);
                    $k4k1=((1/$v->k1k4)/$sum1); $k4k2=((1/$v->k2k4)/$sum2); $k4k3=((1/$v->k3k4)/$sum3); $k4k4=(1/$sum4); $k4k5=($v->k4k5/$sum5); $k4k6=($v->k4k6/$sum6); $k4k7=($v->k4k7/$sum7);
                    $k5k1=((1/$v->k1k5)/$sum1); $k5k2=((1/$v->k2k5)/$sum2); $k5k3=((1/$v->k3k5)/$sum3); $k5k4=((1/$v->k4k5)/$sum4); $k5k5=(1/$sum5); $k5k6=($v->k5k6/$sum6); $k5k7=($v->k5k7/$sum7);
                    $k6k1=((1/$v->k1k6)/$sum1); $k6k2=((1/$v->k2k6)/$sum2); $k6k3=((1/$v->k3k6)/$sum3); $k6k4=((1/$v->k4k6)/$sum4); $k6k5=((1/$v->k5k6)/$sum5); $k6k6=(1/$sum6); $k6k7=($v->k6k7/$sum7);
                    $k7k1=((1/$v->k1k7)/$sum1); $k7k2=((1/$v->k2k7)/$sum2); $k7k3=((1/$v->k3k7)/$sum4); $k7k4=((1/$v->k4k7)/$sum4); $k7k5=((1/$v->k5k7)/$sum5); $k7k6=((1/$v->k6k7)/$sum6); $k7k7=(1/$sum7);

                    //Menghitung jumlah total baris
                    $totalbaris1 =($k1k1+$k1k2+$k1k3+$k1k4+$k1k5+$k1k6+$k1k7);
                    $totalbaris2 =($k2k1+$k2k2+$k2k3+$k2k4+$k2k5+$k2k6+$k2k7);
                    $totalbaris3 =($k3k1+$k3k2+$k3k3+$k3k4+$k3k5+$k3k6+$k3k7);
                    $totalbaris4 =($k4k1+$k4k2+$k4k3+$k4k4+$k4k5+$k4k6+$k4k7);
                    $totalbaris5 =($k5k1+$k5k2+$k5k3+$k5k4+$k5k5+$k5k6+$k5k7);
                    $totalbaris6 =($k6k1+$k6k2+$k6k3+$k6k4+$k6k5+$k6k6+$k6k7);
                    $totalbaris7 =($k7k1+$k7k2+$k7k3+$k7k4+$k7k5+$k7k6+$k7k7);

                    //Rata-rata dari jumlah total baris adalah Vektor Prioritas (vp)
                    $vp1 = ($totalbaris1/7);
                    $vp2 = ($totalbaris2/7);
                    $vp3 = ($totalbaris3/7);
                    $vp4 = ($totalbaris4/7);
                    $vp5 = ($totalbaris5/7);
                    $vp6 = ($totalbaris6/7);
                    $vp7 = ($totalbaris7/7);

                    //Hasil perkalian matrik dengan vektor prioritas adalah Vektor Jumlah Bobot(vjb)
                    $vjb1 = ( (1*$vp1)+($v->k1k2*$vp2)+($v->k1k3*$vp3)+($v->k1k4*$vp4)+($v->k1k5*$vp5)+($v->k1k6*$vp6)+($v->k1k7*$vp7) ); 
                    $vjb2 = ( ((1/$v->k1k2)*$vp1)+(1*$vp2)+($v->k2k3*$vp3)+($v->k2k4*$vp4)+($v->k2k5*$vp5)+($v->k2k6*$vp6)+($v->k2k7*$vp7) ); 
                    $vjb3 = ( ((1/$v->k1k3)*$vp1)+((1/$v->k2k3)*$vp2)+(1*$vp3)+($v->k3k4*$vp4)+($v->k3k5*$vp5)+($v->k3k6*$vp6)+($v->k3k7*$vp7) ); 
                    $vjb4 = ( ((1/$v->k1k4)*$vp1)+((1/$v->k2k4)*$vp2)+((1/$v->k3k4)*$vp3)+(1*$vp4)+($v->k4k5*$vp5)+($v->k4k6*$vp6)+($v->k4k7*$vp7) ); 
                    $vjb5 = ( ((1/$v->k1k5)*$vp1)+((1/$v->k2k5)*$vp2)+((1/$v->k3k5)*$vp3)+((1/$v->k4k5)*$vp4)+(1*$vp5)+($v->k5k6*$vp6)+($v->k5k7*$vp7) ); 
                    $vjb6 = ( ((1/$v->k1k6)*$vp1)+((1/$v->k2k6)*$vp2)+((1/$v->k3k6)*$vp3)+((1/$v->k4k6)*$vp4)+((1/$v->k5k6)*$vp5)+(1*$vp6)+($v->k6k7*$vp7) ); 
                    $vjb7 = ( ((1/$v->k1k7)*$vp1)+((1/$v->k2k7)*$vp2)+((1/$v->k3k7)*$vp3)+((1/$v->k4k7)*$vp4)+((1/$v->k5k7)*$vp5)+((1/$v->k6k7)*$vp6)+(1*$vp7) ); 

                    //Nilai Vektor Jumlah Bobot dibagi dengan nilai vektor prioritasnya menghasilkan Bobot Prioritas(BP)
                    $bp1 = ($vjb1/$vp1);
                    $bp2 = ($vjb2/$vp2);
                    $bp3 = ($vjb3/$vp3);
                    $bp4 = ($vjb4/$vp4);
                    $bp5 = ($vjb5/$vp5);
                    $bp6 = ($vjb6/$vp6);
                    $bp7 = ($vjb7/$vp7);

                    //Menghitung Lamda Maks
                    $lmaks = (($bp1+$bp2+$bp3+$bp4+$bp5+$bp6+$bp7)/7);

                    //Menghitung Consistency Index
                    $n = 7;
                    $ci = ( ($lmaks-$n)/($n-1) );

                    //Menghitung Consistency Ratio
                    $ri = 1.320;
                    $cr = $ci/$ri;

                }
            }
                if($cr <= 0.10){
                    if(!empty($insert)){
                    DB::table('matrikkriterias')->insert($insert);
                    return back()
                        ->withSuccess('Matrik Konsisten! Data Disimpan');
                    }
                }else{
                    dd('nilai CR anda '.$cr.' Matrik Tidak KOnsisten! Silahkan ulangi pengisian matrik anda!');
                    return back();

                }
        }
        return back();  
    }
  • 写回答

1条回答 默认 最新

  • duanlie2709 2017-03-16 17:54
    关注

    i add this in my code

    if(!empty($value->jenis_perusahaan))
    {}
    

    after foreach, thus it looks like this now,

    public function importFile()
    {
        if(Input::hasFile('import_file')){
            $path = Input::file('import_file')->getRealPath();
            $data = Excel::load($path, function($reader) {
            })->get();
    
            if(!empty($data) && $data->count()){
                foreach ($data as $key => $value) {
                    if(!empty($value->jenis_perusahaan))
                    {
                        $insert[] = [
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示