recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment obtenir des variables internes en dehors du corps de la méthode en PHP ?

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梦2831 Il y a quelques jours699

répondre à tous(2)je répondrai

  • PHPz

    PHPz2017-05-19 10:10:55

    $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;

    répondre
    0
  • PHPz

    PHPz2017-05-19 10:10:55

    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é

    .

    répondre
    0
  • Annulerrépondre