gpt4 book ai didi

php - 传递给 each() 的数组为空

转载 作者:行者123 更新时间:2023-12-04 15:49:29 26 4
gpt4 key购买 nike

我正在尝试将一些数据存储到数组中。但是,我创建的公共(public)数组在 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

最佳答案

匿名函数不会自动访问外部变量。您需要使用 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;

如果您想将其保存在类属性中,则在函数末尾。

关于php - 传递给 each() 的数组为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40019128/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com