我正在尝试将一些数据存储到数组中。
但是,我创建的公共数组在each()
内变为null。
怎么纠正?
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);
});
}
错误: Crawler.php第20行中的ErrorException: array_push()期望参数1为数组,给定
为null答案 0 :(得分:8)
匿名函数不会自动访问外部变量。您需要使用use()
选项来访问外部变量。它需要作为参考,以便函数内部的修改影响原始变量,而不是副本。
$crawler->filter('p > strong')->each(function ($node) use (&$questions) {
$ques = $node->text();
echo $ques;
var_dump($ques);
array_push($questions, $ques);
});
顺便说一句,函数中的$questions
变量与类的$questions
属性不同。你需要这样做:
$this->questions = $questions;
在函数末尾,如果你想将它保存在类属性中。