Comment obtenir des variables internes en dehors du corps de la méthode en PHP ?
过去多啦不再A梦
过去多啦不再A梦 2017-05-19 10:08:55
0
2
668

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().

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

répondre à tous(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, 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é

.
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal