我正在尝试将一些数据存储到数组中.但是,我创建的公共数组在内部变为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
匿名函数不会自动访问外部变量.您需要使用该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)
如果要将它保存在类属性中,则在函数末尾.
| 归档时间: |
|
| 查看次数: |
91 次 |
| 最近记录: |