1.Code source :
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. Question : Comment la variable $result (italique) dans le corps de la fonction peut-elle être appelée en dehors du corps de la méthode, c'est-à-dire le code dd($result) ?
Solution : Référence :
<?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();
Définir des variables dans la classe peut résoudre le problème. L'inconvénient est que toutes les méthodes de la classe sont accessibles. J'espère que la variable n'existe que dans le corps de la méthode importexcel(), et que la variable $return dans Excel::load($filePath, function($reader) {} est accessible en dehors d'Excel::load().
$result = Excel::load($filePath, function($reader) {
return $result, accédez directement à la classe importexcel depuis l'extérieur Puisque votre résultat $result est logiquement généré par la fonction importexcel, l'accès direct n'est pas recommandé
.