传递给each()的数组为null

Nav*_*mar 2 php arrays

我正在尝试将一些数据存储到数组中.但是,我创建的公共数组在内部变为null each().怎么纠正?

public $questions = array();

public function crawl(){
    $questions = array();
    $client = new Client();
    $crawler = $client->request('GET', 'https://indiabusinessquiz.com/');
    $crawler->filter('p > strong')->each(function ($node) {       
      $ques = $node->text();
      echo $ques;
      var_dump($ques);
      array_push($questions, $ques);
    });
}
Run Code Online (Sandbox Code Playgroud)

错误: Crawler.php第20行中的ErrorException:array_push()期望参数1为数组,给定null

Bar*_*mar 8

匿名函数不会自动访问外部变量.您需要使用该use()选项来访问外部变量.它需要作为参考,以便函数内部的修改影响原始变量,而不是副本.

$crawler->filter('p > strong')->each(function ($node) use (&$questions) {       
  $ques = $node->text();
  echo $ques;
  var_dump($ques);
  array_push($questions, $ques);
});
Run Code Online (Sandbox Code Playgroud)

顺便说一下$questions,函数中的变量$questions与类的属性不同.你需要这样做:

$this->questions = $questions;
Run Code Online (Sandbox Code Playgroud)

如果要将它保存在类属性中,则在函数末尾.