Yêu cầu thg 4 6, 2019 3:01 SA 544 0 1
  • 544 0 1
+1

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

Chia sẻ
  • 544 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 CÂU TRẢ LỜI


Đã trả lời thg 4 6, 2019 3:13 SA
Đã được chấp nhận
+9

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

Chia sẻ
Avatar duongricky @duongricky
thg 4 6, 2019 6:05 SA

e cảm ơn ạ

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí