Asked Apr 6th, 3:01 AM 128 0 1
  • 128 0 1
0

Không sử dụng được hàm array_push() trong PHP

Share
  • 128 0 1

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 ANSWERS


Answered Apr 6th, 3:13 AM
Accepted
+6

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

Share
duongricky @duongricky
Apr 6th, 6:05 AM

e cảm ơn ạ

0
| Reply
Share