Bagaimana untuk mendapatkan pembolehubah dalaman di luar badan kaedah dalam PHP?
过去多啦不再A梦
过去多啦不再A梦 2017-05-19 10:08:55
0
2
653

1. Kod sumber:

    public function importexcel(Request $request){
        $file = Input::file('myfile');
        if($file->isValid()){
            $tmpName = $file->getClientOriginalName();
            $path = $file->move(storage_path().'/uploads',$tmpName);
            $subtmpName = substr($tmpName,0,-5);

            $filePath = "storage/uploads/".iconv('UTF-8', 'UTF-8', $subtmpName).'.xlsx';

            Excel::load($filePath, function($reader) {
                $reader->noHeading();
                $data = $reader->toArray();
                for($i = 1;$i<count($data);$i++){
                     $midArr = $data[$i];
                     //获取一个人员的Player_id字段
                     if($i == 1){
                         $first_player_id = $data[1][0];
                     }
                     for($j = 0;$j<count($midArr);$j++){                   
                          $player_id = (string)$midArr[0];
                          $node = (string)$midArr[1];
                          $childnode = (string)$midArr[2];
                          $time = (string)$midArr[3];
                         $uuid = (string)UUID::generate();
                         //将Excel表中的数据导入score表中
                        ***$result =  DB::insert('insert into score (id,player_id,node,childnode,time) values (?,?,?,?,?)',[$uuid,$player_id,$node,$childnode,$time]);***
                     
                     }
                }
            });
        }else{
            //Excel数据不合法的情况
        }

        dd($result);
    }
    

2. Soalan: Bagaimanakah pembolehubah $hasil (italik) dalam badan fungsi dipanggil di luar badan kaedah, iaitu, kod dd($hasil)?

Penyelesaian: Rujukan:

<?php
class demo{
    public $var1 = null;
    public function func1(){
        $this->var1 = 'from func1';
    }
 
    public function func2(){
        echo $this->var1;
    }
}
$demo = new demo();
$demo->func1();
$demo->func2();

Mentakrifkan pembolehubah dalam kelas boleh menyelesaikan masalah. Kelemahannya ialah semua kaedah dalam kelas boleh diakses. Saya berharap pembolehubah itu hanya wujud dalam badan kaedah importexcel(), dan pembolehubah $return dalam Excel::load($filePath, function($reader) {} boleh diakses di luar Excel::load().

过去多啦不再A梦
过去多啦不再A梦

membalas semua(2)
PHPzhong

$result = Excel::load($filePath, function($reader) {

$result = array();
.....
$result[] =  DB::insert('insert into score (id,player_id,node,childnode,time) values (?,?,?,?,?)',[$uuid,$player_id,$node,$childnode,$time]);
}
}
return $result;
PHPzhong

return $result, akses terus kelas importexcel secara luaran Memandangkan hasil $result anda dijana oleh logik fungsi importexcel, tidak disyorkan untuk mengaksesnya secara terus

.
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan