Không sử dụng được hàm array_push() trong PHP
Em có function như này:
Khi sử dụng array_push
trong hàm each thì báo lỗi "array_push() expects parameter 1 to be array, null given"
Mong các anh chị giúp đỡ
$array_data = array();
$client = new Client();
$crawler = $client->request('GET', 'https://www.topitworks.com/vi/cong-ty-it-hang-dau-viet-nam');
$crawler->filter('#company-profile-list .cp-item-detail h3')->each(function ($node) {
array_push($array_data, $node->text());
});
1 CÂU TRẢ LỜI
Do đoạn code array_push($array_data, $node->text());
của em đang được sử dụng bên trong một anonymous function
, hay còn gọi là closure
, tức một hàm được truyền vào trong method ->each()
, nên nó sẽ không có quyền access vào biến $array_data
ở bên ngoài. Thay vào đó biến $array_data
ở trong anonymous function của em sẽ có giá trị là null
, bởi vậy nên em sẽ gặp lỗi array_push() expects parameter 1 to be array, null given
Muốn sử dụng biến $array_data
ở bên ngoài, em phải dùng từ khoá use
như sau
$crawler->filter('#company-profile-list .cp-item-detail h3')->each(function ($node) use ($array_data) {
array_push($array_data, $node->text());
});
Em có thể tìm hiểu thêm về Closure trong PHP tại bài viết này: https://viblo.asia/p/lambda-va-closures-trong-php-DXOGRZZnGdZ
e cảm ơn ạ